• 締切済み

エクセルのひと月の一覧表から誰が、いつ、どれだけの量を使用したか抽出したい

エクセルのひと月の一覧表から誰が、いつ、どれだけの量を使用したか抽出したい 月集計表(シート名) 氏名|番号| 1 | 2 | 3 | 4 | 5 | 6 | 7 | A氏| 1 | | | | |500| | | B氏| 2 | |150|213| | | | | C氏| 3 | | | | | | | | D氏| 4 | | | | |534| | | 今の上のような月の一覧に使用した量を入力しています。 番号の列の数字はその左のセルにある各顧客の管理番号、一番上の行にあるのが月の日付です。 これが6月の各顧客の一覧だとして 使用回数(シート名) 氏名|番号|_1回目_|_2回目_|_3回目_|→4,5,6回目と続く A___|1___|6/4|500|___|___|___|___| B___|2___|6/2|150|6/3|213|6/7|100| C___|3___|___|___|___|___|___|___| D___|4___|6/5|534|___|___|___|___| 管理番号の並びは変えずにこのような一覧を別シートに作りたいのです。 月の一覧に入力したら自動的にこちらにも入力されるような方法はあるでしょうか?あったら方法もお願いします。

みんなの回答

回答No.5

#4です。作業表案(範囲などは修正してください) ●作業表の作成(作成後は非表示) A9セル =COUNT(C3:I3) 下へオートフィル B9セル 0 フィルハンドルダブルクリック C9セル =B9+(C3<>"") 右へ下へオートフィル (わかりやすいようにA8:I8、J9:J12セルに説明として入れてありますが不要です) C16セル(年・月は適宜、セル参照してください) =IF($A9<C$15,"",("2009/6/"&INDEX($C$2:$I$2,MATCH(C$15-1,$B9:$H9)))*1) D16セル =IF(C16="","",INDEX($C3:$I3,DAY(C16))) C16:D16セル 右へ下へオートフィル (ちなみに、#4の回答でもD16セルの方法でよかったです) C14:J19セルを切り取って、別シートに貼り付け (配列数式は人数が多かったり、ブックが年単位になると重くなると思われます)

回答No.4

作業表を使ったほうが良さそうです 良い考えが浮かんでこないのでとりあえずの配列数式で。 C11セル =IF(COUNT($C3:$I3)<C$10,"", ("2009/6/"&INDEX($C$2:$I$2,SMALL(IF($C3:$I3<>"",$C$2:$I$2),C$10)))*1) [Ctrl]+[Shift] +[Enter] で確定、配列数式です({}で囲まれる) D11セル =IF(C11="","",INDEX($C3:$I3,SMALL(IF($C3:$I3<>"",$C$2:$I$2),C$10))) [Ctrl]+[Shift] +[Enter] で確定、配列数式です({}で囲まれる) C11:D11セル範囲を選んで右へ下へオートフィル 回目のところを数値にしています。 配列数式を使わない方が良さそうなので参考まで

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! 何度もごめんなさい。 前回の回答で Sheet2のD2セルの数式を =IF(ISERROR(INDEX(Sheet1!$C$8:$L$8,,SMALL(Sheet1!$C11:$L11,(COLUMN()+1)/2-1))),"",IF(MOD(COLUMN(),2)=1,Sheet1!$B$1&"/"&INDEX(Sheet1!$C$8:$L$8,,SMALL(Sheet1!$C11:$L11,(COLUMN()+1)/2-1)),IF(MOD(COLUMN(),2)=0,INDEX(Sheet1!$C$3:$L$6,MATCH($A4,Sheet1!$A$3:$A$6,0),INDEX(Sheet1!$C$8:$L$8,,SMALL(Sheet1!$C11:$L11,COLUMN()/2-1))),""))) として、行・列方向へオートフィルでコピーしてみてください。 何とか希望に近い形にならないでしょうか? 尚、偶数列のセルの書式設定の表示形式は 標準でお願いします。 どうもたびたび失礼しました。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 参考になるかどうか分かりませんが・・・ ↓の画像のように表を作ってみました。 Sheet1に作業用の表を作成しています。 Sheet1の作業用の表 C9セル =IF(INDEX($C$3:$L$6,MATCH($A9,$A$3:$A$6,0),MATCH(C$8,$C$2:$L$2,0))="","",COLUMN()-2) という数式を入れて、行・列方向にオートフィルでコピーします。 次にSheet2の C2セル =IF(COUNT(Sheet1!$C9:$L9)>=(COLUMN()+1)/2-1,Sheet1!$B$1&"/"&INDEX(Sheet1!$C$8:$L$8,,SMALL(Sheet1!$C9:$L9,(COLUMN()+1)/2-1)),"") として、C2セルの数式をE2・G2・I2・・・というように奇数列にコピーします。 同じように、Sheet2のD2セルに =IF(COUNT(Sheet1!$C9:$L9)>=COLUMN()/2-1,INDEX(Sheet1!$C$3:$L$6,MATCH($A2,Sheet1!$A$3:$A$6,0),DAY(C2)),"") という数式をいれて D2セルの数式を F2・H2・J2・・・というように偶数列にコピーします。 (オートフィルでコピーしてしまうと、すべてのセルがどちらかの数式になってしまうために、 このように列ごとにコピーしなくてはなりません。) そして↓の表でいえば C2セル~V2セルを範囲指定した後に オートフィルで下へコピーしています。 尚、Sheet2のデータ部分はセルの書式設定の表示形式は「標準」にしておいてください。 このような感じで良いのでしょうか? もし的外れなら読み流してくださいね。m(__)m

duo9999
質問者

お礼

回答ありがとうございます。そして返事が遅くなって申し訳ありません。 なんとかうまく出来ました。 これで作業がずいぶんと楽になります。 ありがとうございました!

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

月集計表(シート名)のC2:I5に数値が表示として A2 A氏の氏名を直接入力 B2=IF($A2="","",VLOOKUP($A2,使用回数!$A$2:$B$5,2,FALSE)) C2=IF($A2="","",VLOOKUP($A2,使用回数!$A$2:$P$5,C$1*2+2,FALSE)) C2をI5までコピー後、B2:I5を下方にコピー

duo9999
質問者

お礼

回答ありがとうございます。 B2=IF($A2="","",VLOOKUP($A2,使用回数!$A$2:$B$5,2,FALSE)) C2=IF($A2="","",VLOOKUP($A2,使用回数!$A$2:$P$5,C$1*2+2,FALSE)) この関数は月集計表のB2とC2に張るのですよね? これは使用回数のシートから月集計表シートに入力されるもののようですが、私の希望としては月集計表シートに入力したら使用回数シートにこのような形式で入力されるようにしたいのです。 どうかよろしくお願いします。