[[20230925073730]] 『リストされた文字を別Sheetにあるリストの文字と』(アラン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『リストされた文字を別Sheetにあるリストの文字と一致したものに紐付いた情報を返す』(アラン)

すみません、どうしても分からないためお助け下さい。
具体的には、Sheet1にリストされてある文字をSheet2のA列のリストにある文字と一致した場合、Sheet2のA列に紐づいたB列にある文字をSheet1のF列のそれぞれの行に抽出したいのですがそのようなことは可能でしょうか?
(例) Sheet1 1行目のA,B,C,D,E列にある文字と一致する文字は、Sheet2のA列1行目のB2なのでRedがSheet1のF列1行目に返される。よろしくお願いいたします。

Sheet1

   A   B   C    D    E    F
1  A1  B2  C3   D4   E5
2  B1  A2  B3   C4   C5
3  C1  C2  A3   B4   B5
4  D1  D2  E3   A4   D5
5  E1  E2  D3   E4   A5

Sheet2

   A    B     
1  B2  Red
2  D5  Blue 
3  A2  Yellow 
4  A3  Green
5  D2  Brown
6  E4  Black
7  A5  Orange 

< 使用 Excel:Microsoft365、使用 OS:unknown >


複数見つかることはあり得ないのでせうか??;
気が付いた点[口だけ出して^^;]だけですみません。
vbaでも出来るとかとは思いますけど。。。(*^^*)
最近関数とか、他機能がすご〜く充実してるよぉですね。
でわでわ
m(__)m
(隠居Z) 2023/09/25(月) 08:30:46

 こういうことなのかな…?
 F1 =LET(a,XLOOKUP(TRANSPOSE(A1:E1),$L$1:$L$7,$M$1:$M$7,""),TRANSPOSE(FILTER(a,a<>"",""))) 下コピー

    |[A]|[B]|[C]|[D]|[E]|[F]   |[G]   
 [1]|A1 |B2 |C3 |D4 |E5 |Red   |      
 [2]|B1 |A2 |B3 |C4 |C5 |Yellow|      
 [3]|C1 |C2 |A3 |B4 |B5 |Green |      
 [4]|D1 |D2 |E3 |A4 |D5 |Brown |Blue  
 [5]|E1 |E2 |D3 |E4 |A5 |Black |Orange
(フォーキー) 2023/09/25(月) 09:15:21

 どうなればいいのか、5行目まですべて書いてください。

 該当するものが複数あったら G列以降に表示でいいのなら

 F1 =TOROW(FILTER(Sheet2!$B$1:$B$7,COUNTIF(A1:E1,Sheet2!$A$1:$A$7),""))
 下にだけコピー(右にはコピーしない)

 以上
(笑) 2023/09/25(月) 09:27:14

フォーキーさん、ありがとうございます。無事解決しました(涙)素晴らしいの一言!ひとつの文字の一致で考えていたのですが、複数の文字が同じ行に含まれて状態でした。失礼いたしました。

(アラン) 2023/09/25(月) 14:42:10


えっと、笑さんの式のほうがいいと思います。
(フォーキー) 2023/09/25(月) 14:54:50

笑さん、不慣れで失礼いたしました。ニックネームを見落としていました。複数該当するものにも応用が利くことが分かりました。どうもありがとうございました。一言言わせて下さい。素晴らしい!

フォーキーさん、ご指摘ありがとうございました。
(アラン) 2023/09/25(月) 16:21:44


すみませんが追加で質問をさせてください。

下記の関数でうまくいったのですが、その後少し発展させようと思ったところで躓いたためお助けください。

 F1 =TOROW(FILTER(Sheet2!$B$1:$B$7,COUNTIF(A1:E1,Sheet2!$A$1:$A$7),""))

新たにデータベースとしてSheet1の列A-Eと同じ情報としてSheet0を作成して、Sheet1のF列に上記の関数を入れてSheet2のA列と合致する情報をSheet1のF列のそれぞれの行にSheet2のB列を返すようにしています。またSheet1のAからE列は、Sheet0のAからE列の情報をIndirect関数で参照するようにしました。

そこでSheet0の行を削除すると、削除をしたSheet0の行のすぐ下の行がSheet1の同じ行に返されますが、そのF列のセル(上記関数を入れてあるセル)が「#REF!」でエラーとなります。このような場合どのようにすればよいでしょうか。ご教示のほどよろしくお願いいたします。

例)Sheet0の2行目を削除すると、元々Sheet1の4行目にあったデータ列AからEは参照しますが、Fのみ「#REF」エラーとなってしまいます。

Sheet0

   A   B   C    D    E    
1  A1  B2  C3   D4   E5
2  B1  A2  B3   C4   C5 (削除)
3  C1  C2  A3   B4   B5
4  D1  D2  E3   A4   D5
5  E1  E2  D3   E4   A5

Sheet1

   A   B   C    D    E    F
1  A1  B2  C3   D4   E5
2  C1  C2  A3   B4   B5 「#REF!」
3  D1  D2  E3   A4   D5
4  E1  E2  D3   E4   A5
5  

(アラン) 2023/10/05(木) 18:18:36


 F1の数式は、Sheet0を参照していないし、
 Sheet1のA〜Eは4行目までちゃんと出ているんですよね。
 そうなると、例示の箇所がエラーになる気がしないんですけどねぇ・・

 >Sheet0のAからE列の情報をIndirect関数で参照するようにしました。
 一体、どんな数式なんですか?

(半平太) 2023/10/05(木) 20:49:38


半平太さん、すみません正確な情報ではなかったです。F1の関数は下記のようになります。

F1=TOROW(FILTER(Sheet2!$B$1:$B$7,COUNTIF(sheet0!A1:E1,sheet2!$A$1:$A$7),""))

Sheet0のAからE列をそれぞれSheet1に参照しているIndirect関数は下記となります。

=IF(INDIRECT(Sheet0!A"&ROW())="","",INDIRECT(Sheet0!A"&ROW()))

(アラン) 2023/10/05(木) 21:34:27


 >F1の関数は下記のようになります。
 >F1=TOROW(FILTER(Sheet2!$B$1:$B$7,COUNTIF(sheet0!A1:E1,sheet2!$A$1:$A$7),""))

 でしたら、元の数式に戻せばいいんじゃないですか?(それでどんな問題が起きるのかこちらは分からないのですけども)
       ↓
  F1 =TOROW(FILTER(Sheet2!$B$1:$B$7,COUNTIF(A1:E1,Sheet2!$A$1:$A$7),""))

(半平太) 2023/10/05(木) 22:09:23


半平太さん、無事解決しました。。どうもありがとうございました。
(アラン) 2023/10/05(木) 22:59:14

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.