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

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

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

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

PowerShell

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

Q&A

1回答

1402閲覧

powershell Excel 特定の文字を含む行数を知りたい

ekTJ

総合スコア109

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

PowerShell

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

0グッド

0クリップ

投稿2021/06/28 08:08

下記excelのようなデータをoracleで出力し、テンプレートのファイル($tmpXlsxFile)へ出力したのですが、
その後の処理に大変苦戦しています。
お忙しいとは思いますが皆様のお知恵を拝借出来ないでしょうか。ご回答心よりお待ちしております。

実現したいこと

下記excelデータのA列の[11],[12],[13]を含む行数の最小行と最大行を抽出したい。
例.[12]の場合
最小/4行目
最大/10行目

powershell

1#ExcelWorkbookの作成 2 $workbook = New-Object ClosedXML.Excel.XLWorkbook($tmpXlsxFile) 3 #取得データをExcelに出力 4 $workSheet = $workbook.Worksheet($sheetName1) 5 6  for($i='11'; $i -le '13'; $i++) { 7 $min = $workSheet.IndexOf($i) 8 $max = $workSheet.LastIndexOf($i) 9 $workSheet.Rows($min,$max).Group() 10 $workSheet.Rows($min,$max).Collapse() 11 } 12 13 [ClosedXML.Excel.XLWorksheet]'IndexOf' という名前のメソッドが含まれないため、メソッドの呼び出しに失敗しました。

excel

1  A列 B列 21  FL FLBX 32  11 1111 43  11 54  12 1206 65  12 1211 76  12 1212 87  12 1221 98  12 1222 109  12 1223 1110 12 1211 13 1321 1312 13 1322 1413 13 1323 1514 13 1324 1615 13 1325 1716 13 1326 1817 13 1331 1918 13

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

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

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

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

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

guest

回答1

0

私は使ったことが無いので知りませんが、
[ClosedXML.Excel.XLWorksheet] に 'IndexOf' という名前のメソッドが含まれない
とのことなので素直にループで処理を勧めます。

下記は
一行目から順にA列の値がなくなるまで取得して
取得したA列の値ごとにグループ化して
それぞれのグループでrowの最小と最大を出すサンプルです。

powershell

1$($i = 0 2while($true){ 3 $i++ 4 5 # A列の $i 行目の値を取る 6 $val=$workSheet.cell($i,1).value() 7 8 if($val -eq $null){break} 9 10 [pscustomobject]@{ 11 name = $val 12 row = $i 13 } 14 15})|group{$_.name}|%{ 16 $m=$_.group.row|measure -Maximum -Minimum 17 [pscustomobject]@{ 18 name=$_.name 19 min=$m.Minimum 20 max=$m.Maximum 21 } 22} 23 24<# 25出力結果 26 27name min max 28---- --- --- 29FL 1 1 3011 2 3 3112 4 10 3213 11 18 33#>

投稿2021/08/03 15:52

編集2021/08/03 15:55
kamikazelight

総合スコア305

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問