前提
PowerShellでエクセルのセル内の数字を抜き出し、計算するプログラムを書いてます。
セルに入った数値を変数に格納する機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
null 値の式ではメソッドを呼び出せません。 発生場所 C:\Users\~~~.ps1:36 文字:13 + $prospect = $sheet.Cells.Item($x,$w) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) []、RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull null 値の式ではメソッドを呼び出せません。 発生場所 C:\Users\~~~.ps1:44 文字:17 + $sheet.Cells.Item($x,$w+1) = $sur_pros + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) []、RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
該当のソースコード
#行ごとに処理 for ($x=15; $x -le 68; $x++){ ###中略### #列ごとに処理 for ($w=9; $w -le 89; $w+=6){ #該当するセル内の値を変数$prospectに保存 $prospect = $sheet.Cells.Item($x,$w) if ($prospect -eq $null){ continue }else{ #月の余剰(surplus)と増減見込み時間(prospect)を掛け算する。それを地域毎に繰り返す。 $sur_pros = $surplus * $prospect #上記掛け算結果をセルに記録する。 $sheet.Cells.Item($x,$w+1) = $sur_pros } } }
実現したいこと
ここでは、セル内に 0 という数値が書かれていてもnullが返ってしまう事で悩んでいます。
($prospectで参照したセルに 0 が入っているとnullのエラーが返ってきます)
PowerShellで処理するとエクセルの空白も 0 も同じようにnullとして認識されますが、
0 が記入されている場合はnullではなく素直に 0 という数値を返して変数に格納したいというのがここで実現したいことです。
補足情報(FW/ツールのバージョンなど)
以前、空白セルを含んだエクセルの処理を考えていた際に
if (変数 -eq $null){
continue
}else{~
という処理をいれたらnullの時は処理をスキップして上手くいった事がありますが
これは空白セルのスキップだった(数値0とはまたケースが違う)から
上手くいったのかな...と思っています。
※この時はセルに1が入っているか空白のセルしかない場合の処理をしていました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。