[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『index/matichでの複数条件について』(のじ)
エクセルで、二つシートがあり以下のようになっています。
sheet1
サーバ名 クラス エラーコード
Aサーバ job ◎◎ジョブで異常終了
Aサーバ press プロセスAは停止しています。
Bサーバ EV メッセージコード:A123が記録されました
・
・
・
sheet2
サーバ名 クラス メッセージ 対応
Aサーバ JOB *ジョブで異常終了* 1
Bサーバ press プロセス*は停止しています。 2
Aサーバ EV *メッセージコード:*が記録されました。 3
・
・
・
これをsheet1のサーバ名とエラーコードに
sheet2のサーバ名とメッセージ抽出条件として、Sheet2の対応を表示させたいと思っています。
indexとmatchを使って、sheet1のエラーコードにsheet2のメッセージを抽出条件
を出すことができるのですが、同じメッセージが他のサーバでも登録されており、sheet2のサーバー名とメッセージを使って、sheet1のエラーコードとsheet2の対応を表示させたいと思っています。
出力イメージ
sheet1のホスト名、sheet1のメッセージ、sheet2の対応 の3点が出力させたいです。
すみませんが教えてもらえないでしょうか。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
とりあえずSheet1のD列に対応を表示させる式。 (クラスは検索に使用しない。
Sheet1のD2セルに =IFERROR(INDEX(Sheet2!D$2:D$100,MATCH(1,INDEX(0/((Sheet2!A$2:A$100=A2)*(COUNTIF(C2,Sheet2!C$2:C$100))),0),1)),"") と入力して下へフィルコピー。
なお、Sheet2のデータは100行目までに対応している。
もっと件数があったり件数が少なくていい場合は式中の「$100」部分をすべて同じ値で変更してくれ。 (ねむねむ) 2016/11/22(火) 13:20
あ、
=IFERROR(INDEX(Sheet2!D$2:D$100,MATCH(1,INDEX(((Sheet2!A$2:A$100=A2)*(COUNTIF(C2,Sheet2!C$2:C$100))),0),0)),"") でも。 (ねむねむ) 2016/11/22(火) 13:34
自分はやりたかったことがばっちりこれで対応できます。
でも、sheet2のデータが約5万件あり、
sheet1の1が約5000件あると、再計算に時間がかかってしまいますね、、、
でも、非常に助かりました。
早急にやりたいことがあり、これでできます。
ありがとうございました。
(のじ) 2016/11/22(火) 14:09
各クラスに重複するメッセージがあり、他のクラスのメッセージと一致してしまい
結果として、抽出されたデーターが目的の答えになりませんでした。
どうすれば、可能になるでしょうか。
一致条件
?@サーバー名
?Aクラス は一致させる
?Bsheet1のメッセージとsheet2のメッセージはワイルドカード含む部分の一致で抽出させる。
よろしくお願いします。
(のじ) 2016/11/24(木) 10:03
=IFERROR(INDEX(Sheet2!D$2:D$100,MATCH(1,INDEX(((Sheet2!A$2:A$100=A2)*(COUNTIF(C2,Sheet2!C$2:C$100))),0),0)),"") は Sheet2!A$2:A$100=A2 でサーバ名の一致、
COUNTIF(C2,Sheet2!C$2:C$100) で、メッセージの一致(ワイルドカード対応)を調べている。
そこにクラスの一致 Sheet2!B$2:B$100=B2 を追加することになる。
=IFERROR(INDEX(Sheet2!D$2:D$100,MATCH(1,INDEX(((Sheet2!A$2:A$100=A2)*(Sheet2!B$2:B$100=B2)*(COUNTIF(C2,Sheet2!C$2:C$100))),0),0)),"") としてみてくれ。 (ねむねむ) 2016/11/24(木) 10:16
(のじ) 2016/11/24(木) 10:29
非常に助かりました。
丁寧に教えていただきありがとうございました。
(のじ) 2016/11/24(木) 10:37
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.