[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データーの統合マクロのシート名に変数を利用したい』(kuzu)
マクロを初めて1ヶ月の初心者です。
データーの統合マクロのシート名に変数を利用したいのですが、
よく、解りません。教えて下さい。よろしくお願いします。
Bookに合計シートと複数の売上シートがあり、 合計シートに各売上シートを統合集計する場合、 例えば、4シートをマクロ記録で統合すると 合計シートをアクティブにしておき、 Range("C7:F68").Select Selection.ClearContents Range("C7").Select Selection.Consolidate Sources:=Array( _ "'東京売'!R10C10:R200C13" _ ,"'大阪売'!R10C10:R200C13" _ ,"'京都売'!R10C10:R200C13" _ ,"'福岡売'!R10C10:R200C13" _ ), Function:=xlSum, TopRow:=False, LeftColumn:=True, CreateLinks:=False でスムーズに動作するのですが、本当は10シート以上で、シート名も変更する 可能性もあり、合計シートM列にシート名一覧表を作成して、一覧表を変更する とシート名も自動的に変わる用にリンクさせていますので、 ThisSheet = Range(”M”& i+1) "'ThisSheet'!R10C10:R200C13" と変数を利用してマクロ行を減らしたいのですが。 よろしくおねがいします。
一応自分なりのやり方でやってみた。 配列を変数に格納する部分と配列から統合を 実行する部分に絞ってあるので、セル範囲のクリア なんかは肉付けしてください。 Sub 配列変数() Rem TEST_20041116 Dim MyAry() As Variant Dim i As Long, MyRow As Long Rem M列、合計シート名 Const MyListCol As Long = 13 'M列 Const MyWsh As String = "Sheet1" '合計シート名
Rem 変数MyRow(M列最下行) MyRow = Sheets(MyWsh).Cells(65536, MyListCol).End(xlUp).Row Rem 変数MyAryにシート名&セル範囲の配列格納 ReDim MyAry(MyRow - 1) For i = 1 To MyRow MyAry(i - 1) = Sheets(MyWsh).Cells(i, MyListCol).Value & "!R10C10:R200C13" Next i
Rem 変数MyAryのセル範囲を統合 Sheets(MyWsh).Range("C7").Consolidate _ Sources:=Array(MyAry()), _ Function:=xlSum, TopRow:=False, _ LeftColumn:=True, _ CreateLinks:=False End Sub (みやほりん) #シート名リストはM1から入力されていることを想定。 #試しちゃってたら「書き忘れごめんなさい」
(kuzu)
早速のご指導ありがとうございました。
何分初心者ですので1行1行の解読に時間がかかりそうです。
全文を理解したうえでトライしてみようと思います。
取り急ぎ、お礼申し上げます。
もう一つ教えて頂きたいのですが、
ある一つの売上データーシートに、ある条件でデーターを抽出索出力して、合計シート
に統合集計する場合に、変数を利用して、
ThisSheet=Range("M"&i+1)
Sheets(ThisSheet).Range("A3:H65000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets(ThisSheet).Range( _ "o7:p8"), CopyToRange:=Sheets(ThisSheet).Range("o10:s65000"), Unique:=False Selection.Consolidate Sources:= _ "'ThisSheet'!R11C15:R65000C19" _ , Function:=xlSum, TopRow:=False, LeftColumn:=True, CreateLinks:=False
とすると、フィルターは動作しますが、データー統合のマクロが「統合元のファイルは開けません。」と表示されてしまいます。
「"'ThisSheet'!R11C15:R65000C19"」
の部分を「 ''」 を削除したり、「&」 を挿入してみたりしましたが、うまく動作しません。
なんとか良い方法はないでしょうか。
よろしくお願いします。
文字列の作り方の問題です。もとの引数はは次のように "'東京売'!R10C10:R200C13" ダブルクォーテーションで囲んだ文字列となります。 だから、ダブルクォーテーションの中にある限りは "'ThisSheet'!R11C15:R65000C19" これは変数としてではなく、"'ThisSheet'"というシート名と受け取られます。 ThisSheetを変数として文字列を作るには "'" & ThisSheet & "'!R11C15:R65000C19" このように&で結合するにしてもダブルクォーテーションの外に 出してやるのがセオリーです。 (みやほりん)
(kuzu)
"みやほりん"さん有り難う御座います。 2番目の質問は、「&」の前後にスペースが必要なことに気づくが遅く手間 どりましたが無事解決しました。ただ、一番目の解答は勉強不足で今少し 時間が必要です。
(KUZU)
やっとできました。”みやほりん”さん、ありがとうございました。 実情は、例よりもちょっと複雑でしたが、なんとか動作しました。 何日間のもやもやがすっきりです。 これからもよろしくお願いします。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.