- ベストアンサー
マクロ(ワーク関数)について教えてください。
マクロ(ワークシート関数?)を使用して、下記のツールを作ろうとしていますが素人の為、さっぱり分かりません。 お知恵を貸して頂きたいので、お願いします。 「概要」 ・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で戻す 多分、マクロではなくワーク関数(VLOOKUP/INDIRECT/IF)を使えば出来ると思いますが、当方さっぱり分かりせん。 (素人でコンピュータ専門分野でもないので...。) 教えて頂けないでしょうか? 以上、お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
[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)
- takana_
- ベストアンサー率44% (21/47)
#3です >メニューよりsheet1で「データ」→「入力規則」でsheet2の「どのサーバで打つか:F列」・「目的は何か:G列」の列を >選択しようとしていますが、シート2自体が選択出来ません。 Excelの仕様で、他のシートの内容は、リストに反映出来ないようです。 >ですのでsheet2の「どのサーバで打つか:F列」・「目的は何か:G列」の列のみ[sheet1]の下の方(見えない所)にコピーして >リストに反映出来るようにしています。 コピーではなく、セル参照で[sheet1]の下の方にsheet2の「F列」・「G列」を反映させれば、sheet2に新たなコマンド行を追加した場合でも 自動で反映されます。 セル参照のしかた コピー → 形式を選択して貼り付け → リンク貼り付け
お礼
ありがとうございます!! おかげでメドが立ちました。 大変感謝しております。 ありがとうございました。
- takana_
- ベストアンサー率44% (21/47)
#2です 1=A列、2=B列、3=C列........10=J列です。 とりあえず試して見てください!
補足
ありがとうございました!! 私が質問した内容が表に反映されました。 感謝致します。 ところで1つ質問ですが、 [シート1] セルE10→どのサーバで打つか(リスト)から選択→例.STサーバ セルE11→目的は何か(リスト)から選択→例.ディスク使用状態の確認 のように上記2つの検索は「リスト」から検索する仕組みです。 ですので、 メニューよりsheet1で「データ」→「入力規則」でsheet2の「どのサーバで打つか:F列」・「目的は何か:G列」の列を 選択しようとしていますが、シート2自体が選択出来ません。 ですのでsheet2の「どのサーバで打つか:F列」・「目的は何か:G列」の列のみ[sheet1]の下の方(見えない所)にコピーして リストに反映出来るようにしています。 しかしあまり良い方法ではなく、sheet2に新たなコマンド行を追加した場合は、 再度sheet1にも、「どのサーバで打つか」・「目的は何か」の列のみ追加しなくてはならないという面倒な状態です。 これは何とかならないでしょうか? 以上です。
- zap35
- ベストアンサー率44% (1383/3079)
これならDCOUNT関数やDGET関数が使えるかもしれません 少しデータは簡略化しますが、以下のような表(データベース)があるとします(質問のシート2に相当します) A列 B列 C列 D列 1行目 コマンド サーバ 目的 場所 2行目 df DBサーバ ログ調査 オペ室 3行目 df STサーバ 顧客依頼 オペ室 4行目 df PNサーバ 障害調査 オペ室 5行目 chmod DBサーバ 障害調査 オペ室 6行目 df DBサーバ 障害対応 サーバ室 7行目 chmod STサーバ 障害調査 サーバ室 8行目 chmod PNサーバ ログ調査 サーバ室 別のシートに検索条件を入力します。シート2とタイトル(項目名)を合わせる必要があります A列 B列 C列 1行目 コマンド サーバ 目的 2行目 df DBサーバ 障害対応 そして検索条件を入力したシートに =DCOUNT(Sheet2!A1:D8,,A1:C2) を入力すると「指定した条件に合致するデータベースのレコード数」を返します。この場合「1」が返ります。 これで「過去コマンドを入力したことがあるかないか」を判定できませんか? ちなみに条件を変えれば件数も変わります A列 B列 C列 1行目 コマンド サーバ 目的 2行目 df DBサーバ 空白 この場合は「2」が返ります また条件を指定して「データベースのレコードを返す」ためのDGET関数もあります。以下のURLをみればどんなものかわかると思います http://www.kenzo30.com/ex_kisotyu/ex_ks_tyukyuxb3_3.htm#データベース関数(DCOUNT、DCOUNTA関数)
お礼
回答ありがとうございました。 条件式、参考になりました。 また質問が出ましたら、宜しくお願いします。
補足
回答ありがとうございます。 因みに E14~E18結果を表示します =INDEX(Sheet2!$A$7:$J$11,$F$10,@@) ※@@は返したい列を指定してください の@@は何を意味する部分なのでしょうか? ここに何を入れたらよいのか分からず、 再質問させて頂きます。 宜しくお願いします。