[[20230125155343]] 『Consolidate のarrayにレコードセットを使いたい』(けい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Consolidate のarrayにレコードセットを使いたい』(けい)

Consolidate の array に レコードセットした内容を使いたい。

    Range("A1").Consolidate Sources:=Array(★ここ★), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False

★ここ★のところの書き方が分かりません。
誰か教えてください(T_T)

オブジェクトは4つ。1列目はIDに統一、2列目に数。行数は不揃い
adoRS1
adoRS2
adoRS3
adoRS4

レコードセット
Set adoRS1 = New ADODB.Recordset



した
adoRS1
adoRS2
adoRS3
adoRS4
に、
AddNewで、情報追加済みです

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 >バリアント型(Variant)の値を使用します。 
 >統合元範囲を参照する、R1C1 形式の文字列を指定します。
 >指定するセル参照には、必ず統合するシートのパスを含めます。
 らしいので、レコードセットを直接指定するのはできないんじゃないですかね?
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_consolidate.html

(稲葉) 2023/01/25(水) 18:04:26


ヘルプをみるとそうなのですが、配列を使っているネット記事やこちらの掲示板をみつけたので、できるのかな?と

私も同じように配列もためしてみましたが、配列もだめでした
(けい) 2023/01/25(水) 18:17:16


 調べたけどないなぁ・・・
 Sourceの部分はもともと配列渡しだから、「Variant型の配列で、Sheet名とセルアドレス渡してね」って意味だろうから、見かけた配列ってこんな感じだったんじゃないの?
    Sub a()
        Dim v(1) As Variant
        v(0) = Sheets(1).Name & "!" & Range("A1:A5").Address(, , xlR1C1)
        v(1) = Sheets(2).Name & "!" & Range("A1:A5").Address(, , xlR1C1)
        Worksheets("Sheet3").Range("A1").Consolidate _
            Sources:=v, _
            Function:=xlSum, _
            TopRow:=False, _
            LeftColumn:=False, _
            CreateLinks:=False
    End Sub

(稲葉) 2023/01/25(水) 18:43:21


そうですね、そうだったのかもしれないですね。

どこのサイトか、履歴も調べたのですがみつかりませんでした
私のみ間違いかもしれませんね。

Consolidateで万行単位を統合すると30分以上かかるので、
オブジェクトに渡す事で、高速化できればと思ってました

他の方法を考えてみます。お付き合いいただきありがとうございました。

(けい) 2023/01/26(木) 11:40:49


 万年単位のデータをエクセルで持ってるってことっすか?
 たぶん、テーブル化とクエリ(か、ピボットテーブル)ですぐできちゃう内容だと思いますよ。

(稲葉) 2023/01/26(木) 12:14:30


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.