Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11全般 : Excel 2019)
関数を教えてください
投稿日時: 23/10/02 16:44:43
投稿者: imaima

Excelの関数について質問です
 
F6からI9の範囲の中に16名のメンバーを入れ
その中から1人をL5に入れ、L5と同じ行の人をM5からO5のセルに反映させたいのですが
何度やってもL5と同じ人がM5からO5に入ってしまうことがあります。
 
そこで
L5の人がF列にいた場合は、同じ行にいるG列、H列、I列の人をM5からO5に反映させ
L5の人がG列にいた場合は、同じ行にいるF列、H列、I列の人をM5からO5に反映させ
L5の人がH列にいた場合は、同じ行にいるF列、G列、T列の人をM5からO5に反映させ
L5の人がI列にいた場合は、同じ行にいるF列、G列、H列の人をM5からO5に反映し
該当しないセルは空白にしたいです。
 
現在作成したExcelは
=IFERROR(INDEX($F$6:$I$10, MATCH($L5, $F$6:$F$10, 0), 2), IFERROR(INDEX($F$6:$I$10, MATCH($L5, $G$6:$G$10, 0), 2), IFERROR(INDEX($F$6:$I$10, MATCH($L5, $H$6:$H$10, 0), 2), INDEX($F$6:$I$10, MATCH($L5, $I$6:$I$10, 0), 2))))
 
 
どなたか教えてください。
よろしくお願いいたします。

回答
投稿日時: 23/10/02 17:22:23
投稿者: WinArrow

説明が理解できないところがあります。
 
>L5と同じ行の人をM5からO5のセルに反映させたい
 
L5と同じ行の人・・・5行目には、データが存在しないけど・・・
 
具体的な表を掲示し、
意図する結果を掲示して貰えませんか?
説明とINDEXで参照しているセル範囲も違っているし・・・
絶対参照について理解していますか?
 
表のレイアウト
  F  G H I
6 あ い う え
7  お か き く
8 け こ さ し
9 す せ そ た

回答
投稿日時: 23/10/02 17:25:51
投稿者: 半平太

M5セル =IF(COUNTIF($F6:$I6,$L5),INDEX($F6:$I6,AGGREGATE(15,6,{1,2,3,4}/($F6:$I6<>$L5),COLUMN(A1))),"")
 
右にコピー

回答
投稿日時: 23/10/02 17:31:19
投稿者: んなっと

  F  G  H  I J K  L  M  N  O
5            H8 I8 F8 G8
6 F6 G6 H6 I6           
7 F7 G7 H7 I7           
8 F8 G8 H8 I8           
9 F9 G9 H9 I9           
 
M5
=INDIRECT(TEXT(SUMPRODUCT(($F6:$I9=L5)*(ROW($F6:$I9)*100+6+MOD(COLUMN($F6:$I9)-1,4))),"!R0C00"),FALSE)
右方向・→

投稿日時: 23/10/03 13:52:32
投稿者: imaima

WinArrow さんの引用:
説明が理解できないところがあります。
 
>L5と同じ行の人をM5からO5のセルに反映させたい
 
L5と同じ行の人・・・5行目には、データが存在しないけど・・・
 
具体的な表を掲示し、
意図する結果を掲示して貰えませんか?
説明とINDEXで参照しているセル範囲も違っているし・・・
絶対参照について理解していますか?
 
表のレイアウト
  F  G H I
6 あ い う え
7  お か き く
8 け こ さ し
9 す せ そ た

 
説明が悪くすみません。
下記の様に自動で F6からI9の人が
L列で指定した人以外の同じ行の人を MからOに入るようにしたいのです。
よろしくお願いいたします。
 
 A B C D E F G H I J K  L   M N O
1
2
3
4        
5                  @  B G K
6         BGK@     A  C J D
7         CJAD     B   M F N
8         HMFN     C   J A D
9         EILO       D  C J A    
8 上記同様にL8からO20まで
9
10

回答
投稿日時: 23/10/03 14:09:51
投稿者: んなっと

$F$6:$I$9 にするだけ。
 
  F  G  H  I J K  L  M  N  O
5            H8 I8 F8 G8
6 F6 G6 H6 I6    I6 F6 G6 H6
7 F7 G7 H7 I7    G9 H9 I9 F9
8 F8 G8 H8 I8           
9 F9 G9 H9 I9           
 
M5
=IFERROR(INDIRECT(TEXT(SUMPRODUCT(($F$6:$I$9=L5)*(ROW($F$6:$I$9)*100+6+MOD(COLUMN($F$6:$I$9)-1,4))),"!R0C00"),FALSE),"")
右方向・→下方向・↓

投稿日時: 23/10/03 14:09:53
投稿者: imaima

んなっと さんの引用:
  F  G  H  I J K  L  M  N  O
5            H8 I8 F8 G8
6 F6 G6 H6 I6           
7 F7 G7 H7 I7           
8 F8 G8 H8 I8           
9 F9 G9 H9 I9           
 
M5
=INDIRECT(TEXT(SUMPRODUCT(($F6:$I9=L5)*(ROW($F6:$I9)*100+6+MOD(COLUMN($F6:$I9)-1,4))),"!R0C00"),FALSE)
右方向・→

 
回答ありがとうございます。
まさにこの感じです。
ただ、5行目は出来たのですが
5行目から20行目も同じように
16名の表から同じグループの人をMからOに入れたいのです。
 
説明が悪くすみません。 表を作成してみました。
下記の様に自動で F6からI9の表の人が
L列で指定した人以外で 同じグループの人を MからOに入るようにしたいのです。
 
5行目から20行目も同じように
F6からI9の表から同じグループの人をMからOに入れたいのです。
こちらで分かりますでしょうか?
何卒よろしくお願いいたします。
  
 A B C D E       FGHI  J K  L     M N O
1
2
3
4        
5                      @   B G K
6        Aグループ BGK@     A   C J D
7        Bグループ CJAD     B    M F N
8        Cグループ HMFN     C    J A D
9        Dグループ EILO       D   C J A    
8             E 〜O 〃
9 
10

投稿日時: 23/10/03 14:14:01
投稿者: imaima

んなっと さんの引用:
$F$6:$I$9 にするだけ。
 
  F  G  H  I J K  L  M  N  O
5            H8 I8 F8 G8
6 F6 G6 H6 I6    I6 F6 G6 H6
7 F7 G7 H7 I7    G9 H9 I9 F9
8 F8 G8 H8 I8           
9 F9 G9 H9 I9           
 
M5
=IFERROR(INDIRECT(TEXT(SUMPRODUCT(($F$6:$I$9=L5)*(ROW($F$6:$I$9)*100+6+MOD(COLUMN($F$6:$I$9)-1,4))),"!R0C00"),FALSE),"")
右方向・→下方向・↓

 
 
出来ました。
ありがとうございます。
何日も悩んでたので本当に助かりました。
本当に本当にありがとうございました。

投稿日時: 23/10/03 14:17:12
投稿者: imaima

半平太 さんの引用:
M5セル =IF(COUNTIF($F6:$I6,$L5),INDEX($F6:$I6,AGGREGATE(15,6,{1,2,3,4}/($F6:$I6<>$L5),COLUMN(A1))),"")
 
右にコピー

 
 
回答ありがとうございました。
説明が悪く理解が難しい中回答いただきありがとうございました。

投稿日時: 23/10/03 14:25:02
投稿者: imaima

imaima さんの引用:
んなっと さんの引用:
$F$6:$I$9 にするだけ。
 
  F  G  H  I J K  L  M  N  O
5            H8 I8 F8 G8
6 F6 G6 H6 I6    I6 F6 G6 H6
7 F7 G7 H7 I7    G9 H9 I9 F9
8 F8 G8 H8 I8           
9 F9 G9 H9 I9           
 
M5
=IFERROR(INDIRECT(TEXT(SUMPRODUCT(($F$6:$I$9=L5)*(ROW($F$6:$I$9)*100+6+MOD(COLUMN($F$6:$I$9)-1,4))),"!R0C00"),FALSE),"")
右方向・→下方向・↓

 
 
出来ました。
ありがとうございます。
何日も悩んでたので本当に助かりました。
本当に本当にありがとうございました。

 
*****************************
 
すみません。
もう一度教えてください。
この式で 表が空欄だったら 空白 に指定してあるように思えるのですが
空白だと 0 となってしまいます。
空白にするにはどうしたら良いでしょうか?
何度もすみません。
よろしくお願いいたします。

投稿日時: 23/10/03 14:31:17
投稿者: imaima

imaima さんの引用:
imaima さんの引用:
んなっと さんの引用:
$F$6:$I$9 にするだけ。
 
  F  G  H  I J K  L  M  N  O
5            H8 I8 F8 G8
6 F6 G6 H6 I6    I6 F6 G6 H6
7 F7 G7 H7 I7    G9 H9 I9 F9
8 F8 G8 H8 I8           
9 F9 G9 H9 I9           
 
M5
=IFERROR(INDIRECT(TEXT(SUMPRODUCT(($F$6:$I$9=L5)*(ROW($F$6:$I$9)*100+6+MOD(COLUMN($F$6:$I$9)-1,4))),"!R0C00"),FALSE),"")
右方向・→下方向・↓

 
 
出来ました。
ありがとうございます。
何日も悩んでたので本当に助かりました。
本当に本当にありがとうございました。

 
*****************************
 
すみません。
もう一度教えてください。
この式で 表が空欄だったら 空白 に指定してあるように思えるのですが
空白だと 0 となってしまいます。
表の中の人が空欄だった時にMからOを空白にするにはどうしたら良いでしょうか?
何度もすみません。
よろしくお願いいたします。

回答
投稿日時: 23/10/03 14:54:23
投稿者: んなっと

質問の際は、毎回必ず具体例を表形式で書くようにしてください。
↓こんな感じで。
 
  F  G  H  I J K  L  M  N  O
5            H8 I8 F8 G8
6 F6 G6 H6 I6    I7 F7 G7 H7
7 F7 G7 H7 I7    G9 H9   F9
8 F8 G8 H8 I8           
9 F9 G9 H9  ←空白         
 
M5
=IF($L5="","",IFERROR(INDIRECT(TEXT(SUMPRODUCT(($F$6:$I$9=$L5)*(ROW($F$6:$I$9)*100+6+MOD(COLUMN($F$6:$I$9)-2+COLUMN(A5),4))),"!R0C00"),FALSE)&"",""))
右方向・→下方向・↓

回答
投稿日時: 23/10/03 15:08:32
投稿者: んなっと

もしかしたらこんなのも。
いったんM:N列の現在の式をすべて削除して
 
  F  G  H  I J K  L  M  N  O
5            H8 F8 G8 I8
6 F6 G6 H6 I6    I7 F7 G7 H7
7 F7 G7 H7 I7    G9 F9 H9  
8 F8 G8 H8 I8           
9 F9 G9 H9             
 
M5
=IF($L5="","",IFERROR(FILTER(INDEX($F:$I,AGGREGATE(15,6,ROW($F$6:$I$9)/($F$6:$I$9=$L5),1),)&"",INDEX($F:$I,AGGREGATE(15,6,ROW($F$6:$I$9)/($F$6:$I$9=$L5),1),)<>$L5),""))
下方向・↓

投稿日時: 23/10/03 16:29:58
投稿者: imaima

imaima さんの引用:
imaima さんの引用:
imaima さんの引用:
んなっと さんの引用:
$F$6:$I$9 にするだけ。
 
  F  G  H  I J K  L  M  N  O
5            H8 I8 F8 G8
6 F6 G6 H6 I6    I6 F6 G6 H6
7 F7 G7 H7 I7    G9 H9 I9 F9
8 F8 G8 H8 I8           
9 F9 G9 H9 I9           
 
M5
=IFERROR(INDIRECT(TEXT(SUMPRODUCT(($F$6:$I$9=L5)*(ROW($F$6:$I$9)*100+6+MOD(COLUMN($F$6:$I$9)-1,4))),"!R0C00"),FALSE),"")
右方向・→下方向・↓

 
 
出来ました。
ありがとうございます。
何日も悩んでたので本当に助かりました。
本当に本当にありがとうございました。

 
*****************************
 
すみません。
もう一度教えてください。
この式で 表が空欄だったら 空白 に指定してあるように思えるのですが
空白だと 0 となってしまいます。
 
表の中の人が空欄だった時にMからOを空白にするにはどうしたら良いでしょうか?
また、表の人数を増やしたい場合、範囲を広げると出来なくなります。どうしたら良いでしょうか
何度もすみません。
よろしくお願いいたします。

回答
投稿日時: 23/10/03 16:41:59
投稿者: んなっと

引用は使わないように。
それから、試した結果を手抜きせずに書きなさい。
「表の人数を増やしたい場合...」は、今のところ無視します。

回答
投稿日時: 23/10/03 19:55:48
投稿者: んなっと

K列まで増やしたとき。
  
  F  G  H  I  J  K  L  M  N  O  P  Q
5             H8 F8 G8 I8    
6 F6 G6 H6 I6 J6   I7 F7 G7 H7 J7  
7 F7 G7 H7 I7 J7   G9 F9 H9 I9 J9 K9
8 F8 G8 H8 I8                
9 F9 G9 H9 I9 J9 K9            
  
M5
=IF($L5="","",IFERROR(FILTER(INDEX($F:$K,AGGREGATE(15,6,ROW($F$6:$K$9)/($F$6:$K$9=$L5),1),)&"",INDEX($F:$K,AGGREGATE(15,6,ROW($F$6:$K$9)/($F$6:$K$9=$L5),1),)<>$L5),""))
下方向・↓
 
※FILTER関数が使えない環境ならだめ。

回答
投稿日時: 23/10/04 07:29:52
投稿者: んなっと

長いけど、こんなのも。
  
  F  G  H  I  J  K  L  M  N  O  P  Q
5             H8 F8 G8 I8    
6 F6 G6 H6 I6 J6   I7 F7 G7 H7 J7  
7 F7 G7 H7 I7 J7   G9 F9 H9 I9 J9 K9
8 F8 G8 H8 I8                
9 F9 G9 H9 I9 J9 K9            
  
M5
=IF($L5="","",IFERROR(INDEX($A:$K,AGGREGATE(15,6,ROW($F$6:$K$9)/($F$6:$K$9=$L5),1),
AGGREGATE(15,6,1*TEXT(COLUMN($F$6:$K$6),"[<>"&MOD(AGGREGATE(15,6,100*ROW($F$6:$K$9)
+COLUMN($F$6:$K$9)/($F$6:$K$9=$L5),1),100)&"]0;;"),COLUMN(A5)))&"",""))
  
右方向・→下方向・↓

投稿日時: 23/10/04 09:29:56
投稿者: imaima

んなっと様
 
早速返信いただきありがとうございます。
10月4日7時29分に投稿頂いた関数で試してみたところ 出来ました!!
朝早くから投稿頂いたおかげで、今日からこちらの関数を使うことが出来て本当に助かりました。
試した結果としては
M5に教えて頂いた関数を入れ、結果を入れたい範囲に式をコピーすると
F6からK9の表の中からL5に指定した人がM5からR5に自動で入ってきます。
空欄のところはちゃんと空白にもなりました。
自分で参照範囲をK10まで増やしたりしてやってみましたがちゃんと検索できました。
しかもちゃんとFからKの順番を優先してMからRに結果が入ってきます。
関数の意味はまだ理解できませんが、範囲を変更することは何とか変更出来ました。
今後人数やグループが増えても使えるので本当に助かりました。
※今回の関数で、AからK全体を範囲指定していて、A5のセルも参照?するのが何故なのか、その意味する事もわかりませんが今後理解できるように研究していきたいと思います。
 
ずっと何日も悩んでおり、このサイトを見つけて今回初めて投稿をしたため
投稿の仕方や作法がわからずご迷惑をおかけしてしまいました。
今後は【引用】を使わず、どなたへのお返事でも【コメント】にて投稿するようにいたします。
また、Excelの質問は んなっと様が投稿してくださったようなExcelの表を作成し
お伺いするということも知りました。
色々教えて頂き、本当に、本当にありがとうございました。
 
最後に、、
10月3日19時55分に投稿頂いた関数は
んなっと様のいう様にFILTER関数が使えない環境のようで
【その関数は正しくありません】となってしまいました。 
いろいろ考えてくださって本当にありがとうございました。
長々と書いてしまいましたが本当に本当にありがとうございました。

投稿日時: 23/10/04 12:32:34
投稿者: imaima

回答いただいた皆様
 
いろいろと回答いただきありがとうございました。
おかげさまで解決しました。
本当にありがとうございました。