Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Ultimate : Excel 2013)
統合(Consolidateメソッド)でのデータ集計について
投稿日時: 17/08/02 15:10:12
投稿者: buukichi_kun

いつも有難うございます。
 
データ集計の統合について教えてください。
宜しくお願い致します。
 
生産日というbookのB列に品名C列に日付が入った一覧があり、最終生産日のB2から同じ品名の最大日付の一覧を作成しようと思っています。
 

品名	日付
りんご	2013/3/1
みかん	2017/3/3
ばなな	2017/3/2
ばなな	2017/3/3
りんご	2013/3/1
みかん	2013/3/1
リンゴ	2013/3/1
みかん	2017/3/4
ばなな	2017/3/5

 
 
With Worksheets("最終生産日")
    .Range("B2").Select
    .Range("B2").Consolidate Sources:="'生産日'!R1C2:R100000C3", Function:=xlMax
End With
 
色々と試行錯誤してコードを書いてみて、昨日は問題なく動いたように思ったのですが、本日続きを記述しようとすると動かなくなりました。
エラーメッセージはRangeクラスのメゾットが・・・と出るのですが、統合する為のこの記述に問題がありますか?
どうぞご教授よろしくお願い致します。

回答
投稿日時: 17/08/02 18:01:50
投稿者: mokutachi

エラーメッセージは正確に全文書いてほしいのですが。

回答
投稿日時: 17/08/02 19:54:58
投稿者: 半平太

こちらで実験した限りの話ですが・・
 
オプションのこれを明示的に入れれば、コケない。
  ↓
, LeftColumn:=True
 
それを入れない場合、ここが10000ならコケないが、100000だとコケた。
           ↓
 "'生産日'!R1C2:R100000C3"

回答
投稿日時: 17/08/02 20:59:49
投稿者: Suzu

こんばんは。
 

引用:
エラーメッセージはRangeクラスのメゾットが

 
・RangeクラスのSelectメソッドが
・RangeクラスのConsolidateメソッドが
 
両方確認できました。
 
前者は、ワークシート「最終生産日」がアクティブでないときに実行すると
ワークシート「最終生産日」の B2 をSelectしようとするのでエラーになります。
 
後者は半平太さんのご指摘の通り。
 
求める結果としてどんな結果を希望しているのでしょうか。
 
ワークシート複数に渡ってではなく、ワークシート 生産日 のみがソースとなるなら
VBA Consolidateメソッド を使わずに、ピボットテーブルを使用して結果を得る方法もありそうですね。

投稿日時: 17/08/03 10:53:59
投稿者: buukichi_kun

mokutachi様、半平太様、Suzu様
 
返信ありがとうございます。
元データは下記のような形で生産数と、出荷数がついている状態になっています。それぞれの品名に対して最終の生産日と最終の出荷日をそれぞれ調べる為の作業の過程で止まっている状態です。
現在は生産に数字の入っている物と出荷に数字の入っている物にわけ、日付しか必要ないのでそれぞれ生産数、出荷数を除いた状態で新しい表を作成しています。
生産表、出荷表のそれぞれを日付の最大日で統合しようとしている途中での質問になります。
 

品名	日付	  生産	出荷
りんご	2013/3/1	1	
みかん	2017/3/3	10	
ばなな	2017/3/2	1	
ばなな	2017/3/3	10	
りんご	2013/3/1		1
みかん	2013/3/1		1
リンゴ	2013/3/1	1	
みかん	2017/3/4		1
ばなな	2017/3/5	5	

 
ソースはワークシートの生産日からで、直接ピボットテーブルでの処理も考えましたが、生産日の最大日付と出荷日の最大日付を同時に表示する為に断念しました。
半平太様のテストでなぜコケるのか理解できていませんが、オプション記入を省略せずに試してみたいと思います。

投稿日時: 17/08/04 16:25:02
投稿者: buukichi_kun

いつもご教授有難うございます。
 
回答頂いた通り、オプションを省略せず記入して完走することができました。
 
現在は下記の通り記述しているのですが,
 .Range("B2").Consolidate Sources:="'生産日'!R1C2:R100000C3", Function:=xlMax LeftColumn:=True
 
"'生産日'!R1C2:R100000C3"部分のR100000について変数で指定することは可能でしょうか?
どうぞよろしくお願い致します。

投稿日時: 17/08/09 16:21:11
投稿者: buukichi_kun

解決致しました。