質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

1回答

897閲覧

PowerShell:一括検索と削除

ponpon10

総合スコア1

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2022/12/12 14:15

前提

Excel内の膨大な情報を整形する為に文字列検索と行削除するプログラムを作成しています。同じ文字列で1回分検索と削除を方法は分かったのですが、同じ文字列指定で一括検索・削除がうまくいきません。

実現したいこと

Excel内の膨大な情報を整形する為に文字列検索と行削除するプログラムを作成したい。

ここに実現したいことを箇条書きで書いてください。

  • 文字列を指定して、エクセル内の情報で指定した文字列と同じ個所を検索して、該当セルの行を削除する。この処理を文字列がヒットしなくなるまでループして続ける処理をしたい。

発生している問題・エラーメッセージ

・文字列をエクセル内で検索をかけてヒットしない場合、エラーとなる為、帰り値がない。
・上記の帰り値が無い為、ループの条件文が作れない。その為ループから抜け出せない。

エラーメッセージ

該当のソースコード

下記より、「????????」の箇所をどうすればよいか分からない。
#ーーー省略ーーー
$KEYWORD = "日本"
#ーーー省略ーーー
do{
$first = $found = $sheet.Cells.Find($KEYWORD) #検索でヒットしないとエラーの為、帰り値が不明
$sheet.Rows.item($found.Row).Delete()
}while(????????) #$sheet.Cells.Find($KEYWORD) =Errorみたいな条件がしたいが、分からない。

PowerShell

試したこと

try catch文を作り、エラーならBreakする処理を作ってみたが、ただエラーが発生するだけ。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/12/12 16:21

閉じてるからじゃないんですか?
guest

回答1

0

見つからない場合は$null になるため
$null -ne $sheet.Cells.Find($KEYWORD)で確認できますよ。

代入式は括弧でくくると変数に代入しつつ値が取得できますので
下記のコードで処理ができます。

PowerShell

1while($null -ne ($found = $sheet.Cells.Find($KEYWORD)){ 2 $null = $found.EntireRow.Delete() 3}

不明点はありますか?

投稿2023/02/20 12:41

kamikazelight

総合スコア305

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問