webdevqa.jp.net

冗長なメソッド呼び出しでExcel / Googleスプレッドシートの数式を簡略化するにはどうすればよいですか?

製品在庫倉庫の保管情報を含むExcel(技術的にはGoogle Sheets)ワークブックを持っています。複数のエントリを持つ1つのシートから必要な情報を取得し(「意識の流れ」と考えてください)、特定の製品の位置の最新のアイテムのみをリストする別のシートに配置するようにクエリを作成する方法を理解しました。

私が抱えていた問題は、その説明の項目が見つからなかった場合、セルを空白のままにする代わりに、#N/Aエントリが表示されることでした。調査の結果、クエリをisna()呼び出しでラップして、#N/Aセルを手動で空白にすることができましたが、クエリがアイテムごとに2回呼び出されるようになり、計算が著しく遅くなりました。

例:

A =タイムスタンプB =通路C =セクションD =行E =位置F =数量G =説明

=if(isna(QUERY('Form Responses 1'!$A$2:$G$10011, "select A where (B = "&B2&" AND C = "&C2&" AND D = '"&D2&"' AND E = '"&E2&"') ORDER BY A DESC LIMIT 1")), " ", QUERY('Form Responses 1'!$A$2:$G$10011, "select A where (B = "&B2&" AND C = "&C2&" AND D = '"&D2&"' AND E = '"&E2&"') ORDER BY A DESC LIMIT 1"))

私の質問は次のとおりです。

1)#N/Aセルを空白にするより効率的な方法はありますか?

2)そうでない場合、同じクエリを2回呼び出さないようにする方法はありますか(たとえば、数式内の一時変数のようなものを使用して)?

私の処方を「美化」するための提案は大歓迎です。

1
Mac Sigler

私は、IFERROR()を使用して数式をクリーンアップし、読みやすくするというカイルの提案を使用しました。

新しいバージョンのExcelにはIFNA()関数があるようですが、現在Googleスプレッドシートでは使用できません。うまくいけば、それは将来実装されるでしょう。

また、IFERROR()はスローされたエラーをすべて飲み込むので、データに特別なエラー処理が必要な場合は注意してください。

1
Mac Sigler