• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAプログラミングの質問です。)

VBAプログラミングで大量のデータをSheet2に書き込む方法

このQ&Aのポイント
  • VBAプログラミングを使用して、Sheet1に格納されている大量のデータをSheet2に書き込む方法を教えてください。
  • 試した方法では、48881個のデータまでは正常に動作しましたが、残りの9104個のデータがSheet2に書き込めませんでした。
  • どのようにすれば全てのデータをSheet2に書き込むことができるのか、アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tossy005
  • ベストアンサー率38% (7/18)
回答No.2

連続投稿申し訳ありません。 第2列と第4列の値が半角なのかどうかご確認下さい。 調査用に下記のように変更したマクロを使用すると便利かもしれません。 Dim n As Long Dim m As Long dim gyou As String dim retsu As String On Error Goto ErrorCheck n = 9104 m = 48881 For k = 1 To n gyou = Worksheets("Sheet1").Cells(k + m, 2) retsu = Worksheets("Sheet1").Cells(k + m, 4)) Worksheets("Sheet3").Cells(1 + Worksheets("Sheet1").Cells(k + m, 2), 1 + Worksheets("Sheet1").Cells(k + m, 4)) = Worksheets("Sheet1").Cells(k + m, 5) Next k ErrorCheck: MsgBox "Sheet1の" & Cstr(k + m) & "行目のデータがおかしいです。" & VBCrlf _ & "第2列 = " & gyou & ":第4列 = " & retsu

kokoichiko
質問者

お礼

解決しました。私のプログラムミスでした。 n = 9104 m = 48881 For k = 1 To n Worksheets("Sheet3").Cells(1 + Worksheets("Sheet1").Cells(k + m, 2), 1 + Worksheets("Sheet1").Cells(k + m, 4)-255) = Worksheets("Sheet1").Cells(k + m, 5) Next k この -255が抜けていました。これでうまくいったと思います。 どうもおさわがせしました。回答ありがとうございました。

その他の回答 (1)

  • tossy005
  • ベストアンサー率38% (7/18)
回答No.1

前の回答が見つからなかったので質問させて下さい。 Sheet1には57985行分データがあるのですよね? ならばSheet2に48881までしか納まらなかったという理由がよく分かりません。 お使いのEXCELのバージョンは何になるのでしょうか。 EXCELのバージョンが2000~2003では、通常65536行256列までが限界です。 2007の場合は104万8576行1万6384列が限界です。 (1)お使いのEXCELのバージョンに照らし合わせ、上記限界を超えた値が第2列、第4列に設定されていないかご確認下さい。 (2)"Sheet3"というシートが存在するかご確認下さい。

kokoichiko
質問者

補足

回答ありがとうございます。バージョンはEXCEL2003です。 Sheet1には57985行分データがあります。 各行には、行番号、列番号、そこの値が書かれています。 Shhet1のこのデータの行番号の最大数が334行、列番号の最大数が309行なので、行列に変換すると、EXCEL2003のため、列がはみ出します。 このプログラムだとSheet2に2列、3列、4列…と代入していき、 48881番目のデータで256列の最終行でいっぱいになるということです。 EXCEL2007を使えばはみださずにいけそうですね。 わかりにくくてすいませんでした。

関連するQ&A