2016-11-01 3 views
0

私はこれでしばらく前から立ち往生していました。私が必要とするのは、タイトルです - 私が持っているものは:(VBA)対応する行の値の指定した日付範囲の列値を抽出してコピーして貼り付けます

シート1:
10億はほとんど不要な列です。

Column D: Values I need   Column F:   Column M: 
Revenue       Names    Date 

12        John    1/24/2016 2:40:02 AM 
15        Sarah    3/2/2016 4:35:17 PM 
14        Sarah    7/17/2016 1:50:10 PM 
20        Matt    8/20/2012 4:16:12 AM 
10        John    11/19/2015 5:04:05 AM 
etc.       etc. 

現在シート2:ピボットテーブル*

Row Label:     
Sarah  
Matt 
John 
etc. 

理想シート2 ピボットテーブル+ *

Row Label:    Column __: 
         Revenue 

Sarah     29 
Matt     0 *(note: see below, but = 0 because Matts value corresponded to date 2012) 
John     22 
etc. 

シート2について重要なことは、ということですをお願いします。 VBAにシート内のもっとも近い空の列を見つけ、S1から列Dの値を入力し(そして重複の合計)、今日の日付から11ヶ月前の範囲の合計と抽出値のみを入力します。現在、次のシートのピボットテーブルを自動的に作成するモジュールを作成しましたが、ちょっと止まったまま上記を追加したかったのです。

また、対応する行ラベル名のデータを抽出するようにVBAに指示すると、合計を指定する必要はないとも仮定しています。そして、私は、シート2にBegin DateとEnd Dateセルを参照するか、TODAY()関数を何らかの形で日付に使うことを考えていましたが、今日の日付範囲の値を抽出して合計する方法を明確にしていません11ヶ月前。

編集:*これは私の現在の状態のダウンバージョンであり、混乱を避けるためにすべてが大きくなっていますので、ピボットは必要ですが、この問題のために希釈することを選択します。

+0

なぜピボットテーブルを使用しますか?重複する名前を削除したいからですか? – Rosetta

+0

すべての生データにピボット・テーブルを配置し、ピボット結果をフィルタするほうが簡単です。ここでVBAがどこに価値を追加するかはっきりしていませんか?パフォーマンスを向上させることですか?あなたの現在のVBAはどのように機能しますか?データのサブセットを新しいタブにコピーしてからピボットしますか? –

+0

@ destination-data - 2番目の質問にはい。別の理由からピボットテーブルが必要なのは、データファイルの量が多いソースファイルのサブセットを取得するためですが、VBAと連動させたい次の空の列がソリューションの一部です。たとえば、2 + 3 = 5に平行して、この列を生成するには、VBAを3にします。ピボットをフィルタリングしますが、ソースファイルからその「列D」を追加しようとすると、Excelが教えてくれますピボットするには大きすぎます。 – S31

答えて

0

本当にピボットテーブルが必要ですか?

あなたはいけない場合は、単に、すべての名前を持つ新しいシートを作成し、あなたが考慮したい開始日のためにセルを設定してください。例えば=のSUMIFS

のSheet2のB1で

あなたが入れた1/24/2016。 はその後、A2に、あなたはあなただけの名前のリストを作成し、すべての名前の横に式をドラッグした後の式

=Sumifs(Sheet1!D:D,Sheet1!F:F,A2,Sheet1!M:M,">"&B$1) 

を入れB2で (例えば、サラ)の名前を挿入します。

*私のExcelはポルトガル語なので、数式には他のいくつかの調整が必要かもしれません。

+0

悲しいことに、ピボットテーブルが別々の理由から必要です - 私がそこに置いたよりもはるかに複雑です - しかし、私は必要な情報だけを入れます。私の質問では、それ以上の畳み込みを避けるためです。上記の公式については、過去11ヶ月間に含まれていた値だけを合計することができますか? – S31

+0

正確です。 sumifsの中の ">" $ B $ 1は、sumの条件がそのセルの日付より高いかどうかを示します。今日の日付のB1セルの値を変更した場合、日付が今日の後にある場合にのみ合計されます – Moacir

+0

だから、私はそれを試してみました。 :K、A2、Sheet1!M:M、 "> ="&TODAY() - 11、Sheet1!M:M、 "<="&TODAY()) ' - しかし、両方の方法で私を返す0 – S31

関連する問題