dポイントプレゼントキャンペーン実施中!

以前2010/01/18でエクセル2003横のデータを縦に並べたいという質問がありました。当方のデータ
は列が多くzでは足らずdzくらいまで必要ですが現状の回答のvbaではzまでしかつかえませんでしたのでいろいろ試行錯誤しましたが解決しませんでした。範囲を広げる方法を教えていただけませんでしょうか。よろしくお願いいたします。

質問者からの補足コメント

  • 回答ありがとうございます。当方、たまたま検索していた中で使えそうなものはないかと探していましたがvbaの知識はなく具体的に何処を直せばよいかわかりません。このマクロでは列の範囲がz
    列以上は確認できませんでしたので、簡単に直せないかな思いましたので投稿しました。

    No.4の回答に寄せられた補足コメントです。 補足日時:2020/11/18 13:41
  • コードを入力していますがエラーメッセージが出ています。
    doに対するloopがありません。
    よろしくお願いします。

      補足日時:2020/11/19 12:56

A 回答 (7件)

見にくいので修正。



Sub Sample()
  Dim Sh1 As Worksheet
  Dim Sh2 As Worksheet
  Dim i As Long, j As Long, X As Long
  Application.ScreenUpdating = False
  Set Sh1 = Worksheets("Sheet1")
  Set Sh2 = Worksheets("Sheet2")
  i = 1
  Do While Sh1.Cells(i, 1) <> "" 'Sheet1の行移動ループ
    j = 3
    Do 'Sheet1の列移動ループ
      X = X + 1 'Sheet2の次の行へ
      Sh2.Cells(X, 1) = Sh1.Cells(i, 1)
      Sh2.Cells(X, 2) = Sh1.Cells(i, 2)
      Sh2.Cells(X, 3) = Sh1.Cells(i, j)
      j = j + 1
    Loop While Sh1.Cells(i, j) <> ""
    i = i + 1 'Sheet1の次の行へ
  Loop
  Application.ScreenUpdating = True
  MsgBox ("完了")
End Sub
    • good
    • 0

>コードを入力していますがエラーメッセージが出ています。



そちらのコードは見えませんので
入力ミスはご自分で探してください。
    • good
    • 0

No.4 です。



スピードアップは考慮せず、かなり基本的なコードです。

Sub Sample()
  Dim i As Long, j As Long, X As Long
  Application.ScreenUpdating = False
  i = 1
  Do While Worksheets("Sheet1").Cells(i, 1) <> "" 'Sheet1の行移動ループ
    j = 3
    Do 'Sheet1の列移動ループ
      X = X + 1 'Sheet2の次の行へ
      Worksheets("Sheet2").Cells(X, 1) = Worksheets("Sheet1").Cells(i, 1)
      Worksheets("Sheet2").Cells(X, 2) = Worksheets("Sheet1").Cells(i, 2)
      Worksheets("Sheet2").Cells(X, 3) = Worksheets("Sheet1").Cells(i, j)
      j = j + 1
    Loop While Worksheets("Sheet1").Cells(i, j) <> ""
    i = i + 1 'Sheet1の次の行へ
  Loop
  Application.ScreenUpdating = True
  MsgBox ("完了")
End Sub
    • good
    • 0

多分、元ネタはこれ。


https://oshiete.goo.ne.jp/qa/5605894.html

Range("XX") の記述をしているので難しいことになってますが、
Cells (i,j) にするか、 Range型の オブジェクト変数を使えば
アルファベット部分の桁数なんか気にしなくてすむでしょうに。
この回答への補足あり
    • good
    • 0

こんにちは



>範囲を広げる方法を教えていただけませんでしょうか。
VBAのエディタで、当該VBAを表示します。
列を制限している部分を、必要な列までに修正ます。
以上で、できると思いますが…?

どこを修正するのかって?
そのもう少し下の、そこのところでしょう。
    • good
    • 0

2003以前でもZ列までしかないということはないかと思いますが。



>現状の回答のvba

とりあえずこちらのコードを提示してみては?
後、もう少しやっている内容の説明をした方がいいと思います。
    • good
    • 0

???



どうやって回答しろと?

範囲を広げるって・・・

単に指定範囲を広げればいいのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!