質問: 関数について教えて下さい。(再質問) 過去に下記の質問をさせて頂きました。 「概要」 ・unixのコマンド調査で、コマンドを過去に打ったことがあるかどうかを検索して、 ある→今後も打てる ない→今後も打てない といった具合に結果を出力させる関数を作成する。 (シート1)→条件指定のシート ・過去に打った実績があるかどうかを(3つの条件から)検索して、結果を出力するシート セルe9→任意のコマンドを(直接)入力→例.df セルe10→どのサーバで打つか(リスト)から選択→例.stサーバ セルe11→目的は何か(リスト)から選択→例.ディスク使用状態の確認 以上が条件指定 以下が検索結果(シート2の情報から出力する) セルe14→コマンド(df)を打った結果→例.プロンプトが戻る セルe15→コマンド(df)の意味→例.ディスク使用状態の表示 セルe16→コマンド(df)を打ったことにより監視装置にエラーメッセージが出力するか→例.出力されない セルe17→コマンド(df)が運用に影響があるか→例.なし セルd18→コマンド(df)が実際に打てるか(例 ○)→ココが本来の主旨 ・まとめるとシート1の表は下記のようになります。 d列 e列 9行目 コマンドを入力して下さい df(直接入力) 10行目 場所は? stサーバ 11行目 目的は? ドライブの使用状況確認 ・ ・ 14行目 どうなる(出力) プロンプトが戻る 15行目 何の情報 ディスク使用状態の表示 16行目 アラームが出力される 出力されない 17行目 運用に影響がある なし 18行目 打てる、打てない ○ (シート2) ・「過去に打ったコマンド名=a列」・「打てる、打てない=c列」・「運用に影響がある=d列」・「場所=f列」・「目的=g列」・「何の情報=h列」・「アラームが出力される=i列」・「どうなる(出力)=j列」の情報が保存されている dbみたいなモノ →下記の表のように管理しています。(他の列は必要ないので省略します。) a列 c列 d列 f列 g列 h列 i列 j列 7行目 df ○ なし stサーバ ディスク使用状態の確認 ディスク使用状態の表示 出力されない プロンプトが戻る 8行目 cp ○ なし dbサーバ コピー コピー 出力されない プロンプトが戻る ・ ・ 88行目 ・1コマンドにつき列ごとに整理されています。 a列7~88行目→打ったコマンドの一覧→88種類(これからも増えます) c列7~88行目→任意のコマンドが実際の環境で打てるか→約2種類(○or×) d列7~88行目→任意のコマンドが運用に影響があるか→約2種類(ありorなし)の2種類 f列7~88行目→コマンドの打った場所のサーバ名→約20種類(こらからも増えます) g列7~88行目→コマンドの打った目的→88種類(これからも増えます) h列7~88行目→何の情報→88種類(これからも増えます) i列7~88行目→コマンドを打った際のアラームの出力→2種類(ありorなし) j列7~88行目→コマンドを打ったらどうなるか→5種類 ・プロンプトが戻る ・プロンプトが戻りファイル生成される ・結果が標準出力された後、プロンプトが戻る ・結果が標準出力された後、プロンプトが戻る(標準出力がないケース) ・結果を標準出力したまま、ctlr+cで戻す →その結果下記の回答を頂きまして、大分完成に近づいてきました。 [sheet1] f9セルに検索条件を指定するセル関数を入力します =$e$9 & "/" & $e$10 & "/" & $e$11 f10セルに検索結果の該当行を返すセル関数を入力します =match(f9,sheet2!k7:k88,0) e14~e18結果を表示します =index(sheet2!$a$7:$j$11,$f$10,@@) ※@@は返したい列を指定してください [sheet2] k列に検索キーを生成するセル関数を入力します k7セルに検索キーを生成するセル関数を入力します =a7 & "/" & d7 & "/" & e7 k8~k88までk7のセルをコピーします →3つの検索条件で一致した場合はリストから正しく表示しますが、 一致しない場合は、結果が「#n/a」と出力します。 条件がひとつでも一致しない場合は、「#n/a」でなく「空欄」で何も表示しない状態にしたいのですが 可能でしょうか? 宜しくお願いします。
回答: 「マシン毎に同じ名前で違う機能の命令を作って混乱させると面白 いかもプロジェクト」でもやってんのかいって感じの質問ですね。 条件に完全に一致する行が見つからなかったら、match関数が#n/aエ ラーを返します。f10ですね。 e14~e18でindex関数にエラー値を渡してしまったらそのままエラー 値が返ってくるので、=if(isna($f$10),"",index(~のようにif関数で エラー判定をして分岐すればオッケー。 でも、該当データが無いということをしっかり表示する#n/aエラー は重要な情報ですよ。無闇に消すのはどうかな。