発生している問題
wsKey1Colはキーとなる項目が格納されている列数のカラム番号です。
この列に格納されているデータの総数が115693件以下の場合は後述のプログラムでうまくいきます。
130460件の場合はTransposeの貼り付け先に#N/Aが出力されて貼り付け自体中途半端な行で終わっている状況になります。
貼り付け先のシートに#N/Aが存在する。(8044行目以降すべてのセルにN/A)
調べたところ
Transposeの元データと貼り付け先の範囲が異なるとエラーとなるとありますが、
ディクショナリのデータ格納数でResizeしているので、その線は薄いです。
別のサイトでは、配列数が多い場合にTransposeはうまくいかないといった記述を見つけました。
https://excel-ubara.com/excelvba4/EXCEL268.html
処理速度を変えることなく
Transposeの代用として使用できる関数はありますでしょうか。
該当のソースコード
VBA
1Dim rngA As Range 2Set rngA = Worksheets("作業シート合算").Cells(1).CurrentRegion.Offset(1) 3Set rngA = rngA.Resize(rngA.Rows.Count - wsGassanHeadder) 4 5Dim D1 As Object 6Set D1 = CreateObject("Scripting.Dictionary") 7 8Dim r As Range 9For Each r In rngA.Rows 10 D1(r.Cells(1, wsKey1Col).Text) = D1(r.Cells(1, wsKey1Col).Text) + r.Cells(1, wsFileSumCol) 11Next 12 13With Worksheets("作業シート合算") 14 'Dictionaryのキー配列を作業シート合算に出力 15 .Range("K2").Resize(D1.Count).Value = WorksheetFunction.Transpose(D1.Keys) 16 'Dictionaryのアイテム配列(集計値)を作業シート合算に出力 17 .Range("M2").Resize(D1.Count).Value = WorksheetFunction.Transpose(D1.items)
試したこと
件数が少ない場合は上記コードで意図した動きができることの確認
件数が多い場合は上記コードでTransposeの貼り付け先に#N/Aが出現することの確認
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。