- 締切済み
エクセル2010の関数について教えてください
下記のような シート1 があります。 A B C D E 1 担当者 商品名 数量 販売単価 売上月 2 山本 えんぴつ 100 150 3 上田 消しゴム 80 180 6月 4 鈴木 ノート 90 170 4月 5 岡田 名刺 500 800 6 松岡 バインダー 300 300 8月 7 遠藤 えんぴつ 110 180 シート1 のE列に売上月が入力された行のみをシート2に自動に表示したいです。 どなたかご指導お願い致します。 A B C D E 1 担当者 商品名 数量 販売単価 売上月 2 鈴木 ノート 90 170 4月 3 上田 消しゴム 80 180 6月 4 松岡 バインダー 300 300 8月 5 6 7
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
E列の売上月が文字列としてシート名をSheet1、Sheet2とすればSheet2のA2セルは数次の式で良いと思います。 =IFERROR(INDEX(Sheet1!$A$1:$E$100,MOD(SMALL(IF(Sheet1!$E$2:$E$100="","",SUBSTITUTE(Sheet1!$E$2:$E$100,"月","")*1000+ROW(A$2:A$100)),ROW(A1)),1000),COLUMN()),"") この数式はIF関数の返り値を配列で返す必要がありますのでCtrl+Shift+Enterで確定します。 A2セルを右へE2までコピーし、下へ必要数だけコピーしてください。 但し、元データの最大行番号を100としていますので実データの行数に合わせて変更してください。 尚、SUBSTITUTE関数の返り値を1000倍していることとMOD関数の除数の1000は元データの最大行数より大きい桁数に変更してください。 元データの売上月が日付のシリアル値の場合は正しい結果を得られませんのでSUBSTITUTE関数の部分を他の関数に置き換える必要があります。