[[20220405212506]] 『XLOOKUP関数で複数の値を取り出したい』(右近) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『XLOOKUP関数で複数の値を取り出したい』(右近)

お尋ねします。
以下のような表があります。
私としては、XLOOKUP関数を使って値を該当のセルに表示させたいのですが、
以下のように値が複数ある場合は、どのように修正すれば良いでしょうか?
よろしくお願いします。

Sheet1
__A_______B
1_太郎____4/9
2_花子____4/9
3_次郎____
4_海子____4/4
5_山子____
6_魚子____4/4
7_猪夫____4/11

Sheet2
A1=西暦
B1=月
A3以下は上記をもとに日付にしています。
以下の関数で一つは取り出すことができるのですが、複数ある場合は取り出せず困っています。
想定としては、同じ日付に5人は取り出せるようにしたいです。
B3=XLOOKUP(A3,Sheet1!$B$1:$B$20,Sheet1!$A$1:$A$20,"")

___A____B_____
1__2022_4
2
3__1
4__2
5__3
6__4____海子・魚子
7__5
8__6
9__7
10_8
11_9____太郎・花子
12_10
13_11___猪夫

< 使用 Excel:Office365、使用 OS:Windows10 >


 ↓ な感じでは? 試してませんけど・・・

 B3 =IFERROR(TEXTJOIN("・",TRUE,FILTER(Sheet1!$A$1:$A$20,Sheet1!$B$1:$B$20=A3)),"")

 ところで ↓ はどうなったんですか?
[[20211119073818]]『縦列を集計させる方法』(右近)

 以上
(笑) 2022/04/05(火) 21:47

   ↓ でよかったかも

 B3 =TEXTJOIN("・",TRUE,FILTER(Sheet1!$A$1:$A$20,Sheet1!$B$1:$B$20=A3,""))

 以上
(笑) 2022/04/05(火) 21:54

笑さん、ありがとうございます。
すごいです。思い通り複数の値を取り出してくれました。
すみません。過去にご教示いただいたものは、そのままになってました。申し訳ありません。
(右近) 2022/04/05(火) 22:52

笑いさんにもう一つ質問です。
昨日教えていただいた以下を、一つ一つ列ごとに分けることは可能でしょうか?
B3 =TEXTJOIN("・",TRUE,FILTER(Sheet1!$A$1:$A$20,Sheet1!$B$1:$B$20=A3,""))
1つ目:B列
2つ目:C列
3つ目:D列
4つ目:E列
5つ目:F列
今一度、よろしくお願いいたします。
(右近) 2022/04/06(水) 07:10

 =TRANSPOSE(FILTER(Sheet1!A$1:A$20,Sheet1!B$1:B$20=A3,""))
(どん) 2022/04/06(水) 07:55

ありがとうございます。
実行しようとすると、その関数は正しくありません、と出てしまいます。
(右近) 2022/04/06(水) 09:17

>過去にご教示いただいたものは、そのままになってました。申し訳ありません。
解決したんですか。どうなんですか。
その趣旨を書かないといけないのでは。
(狐) 2022/04/06(水) 10:14

 >実行しようとすると、その関数は正しくありません、と出てしまいます。
 そんなふうに出る式には見えませんけど?

 Excel でタテのデータをヨコにしたい【スピル編】
https://www.shegolab.jp/entry/excel-spill-transformation
 これの真ん中辺にある「リスト表からグループ表にスピる」を見てください。
 同じことですよね? シートが同じか別かの違いはあっても・・・

 >=TRANSPOSE(FILTER($C$2:$C$10,$B$2:$B$10=E2,""))
この式を下にコピーするだけで、右方向には勝手に展開する(スピル)と書いてあります。

 なので ↓ をB3セルに入れて、下コピーだけでできるのでは?
 >=TRANSPOSE(FILTER(Sheet1!A$1:A$20,Sheet1!B$1:B$20=A3,""))
 ※右方向にはコピーしないように

 ところで ↓ が解決済みなら
[[20211119073818]]『縦列を集計させる方法』(右近) 

 ↓ も同じことですよね?
[[20220405095407]]『色ごとの合計金額を計算したい』(右近)

 以上
(笑) 2022/04/06(水) 13:19

笑さん、狐さんからご指摘いただいている過去の質問に関しては、ご教授いただいた内容を自分なりにやってみたのですが、うまくいかず、途中であきらめてしまってました。再度、また自分でやってみて、質問なり報告をさせていただきます。ご指摘ありがとうございます。そして、ご教授いただいた方々、すみません。

笑さん、どんさんからお示しいただいた関数について、一つお尋ねです。
自宅はOffice365ですが、職場は2019なのです。365ではきちんと結果が出ました!素晴らしいです!しかも、笑さんがしっかり注意してくださったとおり、下にのみコピーするだけで、同じ日が増えたらきちんと表示してくれました!ただ、職場の2019ではエラーとなってしまうようです。どちらでも使用できるようにしたいのですが…
(右近) 2022/04/06(水) 18:54


 =IFERROR(INDEX(Sheet1!$A$1:$A$20,AGGREGATE(15,6,ROW(A$1:A$20)/(Sheet1!$B$1:$B$20=$A3),COLUMN(A1))),"")
必要分→↓コピペ
(どん) 2022/04/06(水) 19:51

どんさん、ありがとうございます。
早速試してみておりますが、コピペしても空白になってしまいます。
(右近) 2022/04/06(水) 21:09

どんさん、うまくいきました!すみません。
もう一つ教えてください。
Sheet1のC列以降にも以下のように日付が入っています。
C列=5月
D列=6月
E列=7月

M列=3月
のように4月から3月までの一年間の日付が入るものです。
それをSheet2のB1に4と入力すればB列を、5と入力すればC列を…3と入力すればM列を参照して、
先ほど教えいただいた以下の関数も変動させることは可能でしょうか?
今一度、よろしくお願いいたします。
(右近) 2022/04/06(水) 22:01

 B3 =IF($A3="","",IFERROR(INDEX(Sheet1!$A:$A,AGGREGATE(15,6,ROW($A$1:$A$20)/(INDEX(Sheet1!$B$1:$M$20,0,MOD($B$1-4,12)+1)=$A3),COLUMN(A3))),""))
 右・下コピー

 こういうこと?
(笑) 2022/04/06(水) 22:14

笑さん、ありがとうございます。スゴイです!見事に変動します!
夜分遅くにすみません。本当にありがとうございました!
(右近) 2022/04/06(水) 23:31

おはようございます。
もう一つ追加で設定したいことがありまして、さらにお尋ねします。
Sheet1の日付データがB1:M20まで、さらにN1:Y20に金額が入るものとします。
以下のような形に修正したいのです。
先日、笑さんにご教授いただいた以下の関数の配列をどのように追加すれば、以下のような形に表示できるようになるでしょうか?
B3 =IF($A3="","",IFERROR(INDEX(Sheet1!$A:$A,AGGREGATE(15,6,ROW($A$1:$A$20)/(INDEX(Sheet1!$B$1:$M$20,0,MOD($B$1-4,12)+1)=$A3),COLUMN(A3))),""))
追加するN1:Y20のデータが4,6,8,10‥行に表示させたいというものです。
B列とN列、C列とO列、D列とP列‥はいわゆるセットというものです。
今一度、ご教授いただきたく、よろしくお願いいたします。

Sheet2
___A____B_________C‥F
1__2022_4
2
3__1
4
5__2
6
7__3
8
9__4____海子______魚子
10______1,500_____2,000
11_5
12
13_6
14
15_7
16
17_8
18
19_9____太郎______花子
20______2,000_____1,500
22_10
23
24_11___猪夫
25______3,000

64

(右近) 2022/04/09(土) 07:34


 奇数行と偶数行で数式を分けます。

 B3セルは前回のまま
 B3 =IF($A3="","",IFERROR(INDEX(Sheet1!$A:$A,AGGREGATE(15,6,ROW($A$1:$A$20)/(INDEX(Sheet1!$B$1:$M$20,0,MOD($B$1-4,12)+1)=$A3),COLUMN(A3))),""))
 ※表の位置を変更するようなことがあっても、COLUMN(A3)は必ずA列のセル番地にすること

 B4 =IF(B3="","",INDEX(Sheet1!$N$1:$Y$20,MATCH(B3,Sheet1!$A$1:$A$20,0),MOD($B$1-4,12)+1))
 表示形式「通貨」(記号:なし)

 B3とB4、2つのセルを選択して右にコピー
 そのまま下にコピー

 ■Sheet2、A列の日付について
 どうやっているのか知りませんけど、一応言っておくと・・・

 A3 =IFERROR(($A$1&-$B$1&-ROUNDUP(ROW(A1)/2,0))*1,"")
 表示形式「日付」

 A3とA4(A4は空白)、2つのセルを選択してA63まで下コピー
 ※ROW(A1) はA1セルの値を参照しているわけではないので
 セルの位置を変更するようなことがあっても「A1」はそのままで

 以上
(笑) 2022/04/09(土) 09:34

笑さん、ありがとうございます。
早速試してみてますが、B3が空欄ではない箇所のB4が「#N/A」となってしまいます。
どこに問題があるでしょうか?
(右近) 2022/04/09(土) 16:42

 こちらでは問題なく表示されているので、どこが問題かと言われてもわかりませんね。

 名前は正しく表示されているのに、その下の金額がエラーになるということ?
 エラーになるのは全部なのか一部だけなのか、どっちですか?

 エラーになるセルのセル番地(どの列の何行目か)と
 そのセルに入っている数式をコピーして提示してください。
 複数あるのならそのうちの一つだけ。

 ひとまず以上です
(笑) 2022/04/09(土) 22:17

>名前は正しく表示されているのに、その下の金額がエラーになるということ?
はい、そうです。名前は正しく表示されています。

>エラーになるのは全部なのか一部だけなのか、どっちですか?
名前が表示されている箇所全部です。名前が空白の箇所はエラー表示されておらず、空白です。

>エラーになるセルのセル番地(どの列の何行目か)とそのセルに入っている数式をコピーして提示してください。複数あるのならそのうちの一つだけ。
B列の10行目です。複数あるうちの一つです。

(右近) 2022/04/09(土) 22:58


 >そのセルに入っている数式をコピーして提示してください。

 B10セルに入っている数式をコピーして提示してください。

 以上
(笑) 2022/04/09(土) 23:17

笑さん、遅くにありがとうございます。
すみません。以下が実際のセルの状況になります。
D14=IF(D13="","",INDEX($Y$7:$AJ$26,MATCH(D13,$A$1:$A$20,0),MOD($B$1-4,12)+1))
よろしくお願いいたします。

___B___C___D
7__1___金
8
9__2___土
10
11_3___日
12
13_4___月__(名前)
14_________#N/A
(右近) 2022/04/09(土) 23:27


 >D14=IF(D13="","",INDEX($Y$7:$AJ$26,MATCH(D13,$A$1:$A$20,0),MOD($B$1-4,12)+1))

 別シートという話だったはずですけど、同じシート?

 名前は「A1:A20」、金額は「Y7:AJ26」で合ってるんですか?
 では日付はどこ?(前の説明では「Sheet1!B1:M20」だった日付)

 実際の表がどうなっているのかよくわかりません。

 以上
(笑) 2022/04/10(日) 00:03

笑さん、おはようございます。そして、ありがとうございます。
ご教授いただく中で、より使いやすくと思い、同一シートに変更しています。きちんと伝えきれてなくて、すみません。以下のとおりになります。

>名前は「A1:A20」、金額は「Y7:AJ26」で合ってるんですか?では日付はどこ?(前の説明では「Sheet1!B1:M20」だった日付)
名前=L7:L26
日付=M7:X26
金額=Y7:AJ26
これを前提に笑さんからご教授いただいた式を以下のように入れています。
その上で、D7とD8、2つのセルを選択して右にコピー、 そのまま下にコピーさせています。
D7=IF($B7="","",IFERROR(INDEX($L$7:$L$26,AGGREGATE(15,6,ROW($A$1:$A$20)/(INDEX($M$7:$X$26,0,MOD($B$2-4,12)+1)=$B7),COLUMN(A1))),""))
D8=IF(D7="","",INDEX($Y$7:$AJ$26,MATCH(D7,$A$1:$A$20,0),MOD($B$2-4,12)+1))

その結果、複数の箇所にエラー、その一つが、
D14=IF(D13="","",INDEX($Y$7:$AJ$26,MATCH(D13,$A$1:$A$20,0),MOD($B$2-4,12)+1))
になります。

よろしくお願いいたします。

(右近) 2022/04/10(日) 05:54


D8=IF(D7="","",INDEX($Y$7:$AJ$26,MATCH(D7,$L$:$L$26,0),MOD($B$2-4,12)+1))
                                          ~~~~~~~~~
~~~~~~部分を間違っていました。ここを名前の範囲に修正したところ、思い通りの結果が表示されました。
笑さん、ありがとうございます。
(右近) 2022/04/10(日) 06:09

~~~~~がずれてしまっています。
正確には、「MATCH(D13,$A$1:$A$20,0)」を「MATCH(D7,$L$:$L$26,0)」に修正しました。
笑さんからきちんと示されていることを私が誤っていました。すみません。
(右近) 2022/04/10(日) 06:11

コメント返信:

[ 一覧(最新更新順) ]


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