dポイントプレゼントキャンペーン実施中!

エクセル初心者です。どうかご指導ください。
シート1の処理1・処理2・処理3に、シート2で一致したコードの隣の値を返したいのですが可能でしょうか?

シート1                 シート2
コード 処理1 処理2 処理3   コード  処理名
 1   AAA               1   AAA
 2   BBB AAA           2   BBB
 3   BBB               3   BBB
 4   CCC AAA           2   AAA
 5                      4   CCC
                        4   AAA

A 回答 (4件)

No2の計算式


=IF(ISERR(INDEX(INDIRECT($A$2&$A3),RIGHT(B$2),2)),"",INDEX(INDIRECT($A$2&$A3),RIGHT(B$2),2))
は一つのシートに表現するためシート名表示の分だけ行が下がっているので、項目名が1行目にある場合は
=IF(ISERR(INDEX(INDIRECT($A$1&$A2),RIGHT(B$1),2)),"",INDEX(INDIRECT($A$1&$A2),RIGHT(B$1),2))
となります。


あと、Sheet2のコードがソート出来ないのであれば配列計算になりますが

=IF(ISERR(INDEX(処理名,SMALL(IF(コード=$A2,ROW(コード)-1,""),RIGHT(B$1)))),"",INDEX(処理名,SMALL(IF(コード=$A2,ROW(コード)-1,""),RIGHT(B$1))))

でも表示可能。
範囲名【コード】はSheet2のコード列、【処理名】は同じく処理名列
計算式は配列計算なのでShift+Ctrl+Enterで確定
    • good
    • 0
この回答へのお礼

再度ご丁寧な回答いただきありがとうございます。
ソートが可能なので計算式を利用させていただきました。
勉強不足だと痛感しました。これを機に一から勉強しようと思います。

お礼日時:2009/02/20 20:59

図を添付し忘れたw

「Excel 条件に一致したセルの隣のセル」の回答画像3
    • good
    • 0

提示された条件で目的の動作を行うには関数式のみでの実現は不可能と思います。



仮にSheet2のコードが昇順、処理順でソートされているとしたら
=IF(ISERR(INDEX(INDIRECT($A$2&$A3),RIGHT(B$2),2)),"",INDEX(INDIRECT($A$2&$A3),RIGHT(B$2),2))
こんな計算式で可能

添付された図の
赤枠で囲ったセル範囲は[コード2]
青枠で囲ったセル範囲は[コード3]
とそれぞれ名前付けされています
それ以外にSheet2の
A2:B2セル範囲(1 | AAA)は[コード1]
A4:B4セル範囲(3 | BBB)は[コード3]
と名前付けられています

Sheet2のコード、処理順がソートされていない場合には使えない手法ですが参考に
    • good
    • 0

例えば


シート2
作業列 コード 処理名
    1   AAA
    2   BBB
    3   BBB
・・・と作業列を追加して A列に =B1+COUNTIF(B1:B$1,B1)/10 といれて下までコピィしておけば

シート1
コード  0.1   0.2  0.3
 1   AAA     
 2   BBB AAA 
 3   BBB
と処理番号を小数点以下の番号入れて
=VLOOKUP($A2+B$1,シート2!$A$1:$C$100,3,FALSE) 右へコピィ、下へコピィ
といった具合で、VLOOKUP関数が使えるようになります。
必要であればエラー処理加えるとか、エラーを表示しないとか方法を考えてください。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
残念ながらシート2に作業列は追加できないのです。
説明不足ですみません。シート1も同じく追加はできず決められた処理1・2・3のセルのみで関数を使い値を表示しなければなりません。
VLOOKUP関数はとても便利な関数なんですね、初心者の私にはとても勉強になります。ご丁寧な説明ありがとうございます。

お礼日時:2009/02/19 23:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!