- ベストアンサー
エクセルの関数で10人の当番表から日別の当番の名前を取得する方法は?
- エクセルの関数を使って、10人の当番表から日別の当番の名前を取得する方法を教えてください。
- IF関数の複数条件で試した結果、ネストが7重までとのことでうまくいきません。
- 例えば、掃除当番がAさん、洗濯当番がBさん、ゴミ当番がDさんというような日別の当番の答えを求める場合、どのような関数を使えば良いでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 少し数式に、無理があるかもしれません。この種の問題は、どうしても大きな数式になってしまいます。 シート1 のA~K にデータがあるとして、 シート2 に書き出すとしたら、 A1: 書式: 0日 「1」 数字を入れる B1: =IF(COUNTA(OFFSET(Sheet1!$A$1,1,1,,11))>=ROW(Sheet1!A1),INDEX(OFFSET(Sheet1!$A$1,$A$1,1,,11),1,SMALL(INDEX(SUBSTITUTE((OFFSET(Sheet1!$A$1,$A$1,1,,11)<>"")*COLUMN(OFFSET(Sheet1!$A$1,,,,11)),0,10^3)*1,,),ROW(Sheet1!A1)))&"当番は、","") C1: =IF(B1<>"",INDEX(OFFSET(Sheet1!$A$1,,1,,11),1,SMALL(INDEX(SUBSTITUTE((OFFSET(Sheet1!$A$1,$A$1,1,,11)<>"")*COLUMN(OFFSET(Sheet1!$A$1,,,,11)),0,10^3)*1,,),ROW(Sheet1!A1))),"") フィルハンドルでドラッグしてコピー。
その他の回答 (2)
- korolo
- ベストアンサー率42% (39/92)
日別の当番を記入する方法を下記に変えた方が良いでしょう。 掃除 洗濯 ゴミ 1日Aさん Bさん Dさん 2日Cさん Dさん Eさん 以上
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルの関数を良く勉強してないせいで、こともなげに「関数で」 と書くが、エクセルは表の並べ替え問題は苦手です。 VBAでやる問題なんだが、VBAは経験無いだろう。 ーー それと同日に掃除を担当する人は2名以上いないのか、ははっきり書くべき。現実にはいると思うが、いるようだと関数ではお手上げかと思う。 ーー それと 日=担当=人名 の3つの要素があって 「1日の『掃除当番はAさん』『洗濯当番はBさん』『ゴミ当番はDさん』というが、どういう表構成にするのか、はっきり例示してないのでは。 ーーー掃除ー洗濯ーごみ 1日 山田ー鈴木ーX のような構成を良く考えて、(文章でさらさら書くのでなく)実例を明記すべきだ。 == Aなどは「掃除」などの文字列を単純化した例にした。 例データ A1:E4 ーは空白の意味。桁ずれを防ぐため入れた。 日 山田 島田 上野 鈴木 1 A ー C B 2 A ー C 3 B ー A C A6:D9に(手作業で) A B C 1 ー ー ー 2 ー ー ー 3 ー ー ー A7に入れる式は =INDEX($A$1:$E$1,1,MATCH(B$6,OFFSET($A$1,MATCH($A7,$A$1:$A$4,0)-1,0,1,5),0)) D7まで式を複写。 A7:D7を範囲指定し、D7で+ハンドルを出してA9:D9まで引っ張って式を複写。 結果 A B C 1 山田 鈴木 上野 2 島田 #N/A 鈴木 3 上野 山田 鈴木 #N/Aを空白にするのは、IF関数とISERROR 関数を使う。勉強してください。上記の式を組み立てるのは、IF関数を使おうとしているレベルの方には無理だ。頭がくらくらするだろう。関数(組み合わせ)の中でも極く難しいものに入るだろう。 じっくり列、行が増えたとき、A6:D9を他シートに持ってくるとき どう変えればよいかじっくり考えてください。