• 締切済み

エクセル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 

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.1

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関数の部分を他の関数に置き換える必要があります。

関連するQ&A