プロが教えるわが家の防犯対策術!

Excelで条件付けをしてデータの抽出をしたいと思っています。
元データは、列に日付、行に名前が入っており、その日に各人が注文したものが通し番号で入力されています。
画像では全員が注文をしている形になっていますが、日によって注文しない人もいます。
その上で、最終的には

【日付】を指定して、該当日に注文をした人を【通し番号】別で集計(別シートで)

をしたいのですが、その為にはどういう形で進めるのが一番シンプルでしょうか。
VBA初心者なので、まず日付で注文者を抽出、そのデータから通し番号ごとの集計、というのがよいのかなあと思うのですが、マクロがどうにもうまくいかず行き詰っています。
要領を得ない質問ですみませんが、アドバイス頂ければ幸いです。

「Excelで条件付けしてデータを抽出した」の質問画像

A 回答 (5件)

マクロじゃないと 駄目なのですか?



要するには、
日付で 抽出、
詰まりは、
列を 取り出せは、
良いのですよね?


ま、

VEAでも 同じ事だとは、
思いますが、

シート関数でも 簡単ですよ?


まぁ、

VBA志向の ようですから、

あくまで イメージですが、

Functionルーチンとして、
Evaluate構文を 持ちい、

シート関数の MATCH構文で、
何列目が 該当列かを、
返させるものを 作成し、
「仮に Function名を、乙と 称す、」


Dim i Az Long, らんげ Az Range, 【日付】 Az Date


i = 乙(【日付】)
らんげ = Set cells(i,i)

等 しては、
如何ですか?


まぁ、

For Each 〜
何かで ループさせても、
でますが、

其れは VBの、
世界の 話しで、

VBAでは ないですし。


第一、

其れでは オブジェクトタッチ数が、
格段に 増えるので、

無駄な 処理時間を、
応分に 要し、
無駄駄目プログラミング化、
しますからね。
    • good
    • 0

添付図参照



B2: =IFERROR(INDEX(Sheet1!$A1:$A5,MOD(SMALL(IF(INDEX(Sheet1!$B2:$D5,0,MATCH($A2,Sheet1!$B1:$D1,0))<>"",INDEX(Sheet1!$B2:$D5,0,MATCH($A2,Sheet1!$B1:$D1,0))+ROW(Sheet1!$B2:$D5)/1000),COLUMN(A1)),1)*1000),"")
【お断り】上式は必ず配列数式として入力のこと
「Excelで条件付けしてデータを抽出した」の回答画像5
    • good
    • 0

> どういう形で進めるのが一番シンプルでしょうか。


クエリで日付列をピボット解除して接続のみ作成

作った接続情報を元にして ピボットテーブルを作ればいいでしょう。
    • good
    • 0

》 …にはどういう形で進めるのが一番シンプルでしょうか


そういうことなら、「全員が注文をしている形」だけでなく、それに基づいて「【通し番号】別で集計(別シートで)」した「形」も呈示すべきです!
    • good
    • 0

追記、



集計も、
Evaluate構文を 持ちいた、
算出ルーティンを 作る方が、

圧倒的に オブジェクトタッチ数が、
削減できますから、
高速動作を しますよね。


あくまで、

別件試験結果ですが、

全て ループで、
処理させるものに 比べれば、

1/100程度の 時間で、
処理か 終わりますよね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!