
ExcelでC2からデータが縦に5つずつ入力されています。
そのデータをG列(G1から開始)に横にデータをはりつけたいのですがどこがおかしいでしょうか?
添付画像は、実行した結果こうしたいという意味ではりつけてます。
エラーになる個所は
Cells(i, Q + 7) = myList(Z, 1) ' G列からK列にコピーです
全体コード↓↓
Sub 縦リストを横リストに変換()
Dim i As Long
Dim Q As Long
Dim Z As Long
Dim lastRow As Long
Dim myList As Variant
' C列のデータを配列に格納
myList = Range("C2", Range("C" & Rows.Count).End(xlUp))
' 最終行を取得
lastRow = Cells(Rows.Count, 3).End(xlUp).Row
Z = 1
' 列をループ
For i = 1 To lastRow / 5
' 配列を5つ分ループ
For Q = 0 To 4
Cells(i, Q + 7) = myList(Z, 1) ' G列からK列にコピー
Z = Z + 1
Next Q
Next i
End Sub

No.3
- 回答日時:
No1です。
>関数だとファイルがかなり重くなっていました。
もしも、お使いのバージョンがOffice365等であれば、G1セルに
=INDEX(C:C,ROW(OFFSET(A1,,,ROUNDUP((MAX(FILTER(ROW(C:C),C:C<>""))-1)/5,0)))*5-4+COLUMN(A1:E1))&""
の式を入力すれば、下方、右方の必要な範囲に自動でスピルされます。
(こちらなら、1セルだけの関数入力なので重くなることはないと思います)
※ 上記は、「C列に値が入っているセルまで」全て反映しますが、「5つのデータが揃っている行まで」とするなら、ROUNDUP関数をROUNDDOWN関数に変えればそのようになります。
どうしてもVBAで行いたいのなら、以下のようなものでも可能と思います。
Sub Sample()
For r = 2 To Cells(Rows.Count, 3).End(xlUp).Row Step 5
Cells(Int(r / 5) + 1, 7).Resize(, 5).Value = _
Application.Transpose(Cells(r, 3).Resize(5).Value)
Next r
End Sub
※ 上記は数式の例と同様に「C列に値が入っているセルまで」としていますが、「5つのデータが揃っている行まで」としたいのなら、For文の繰り返し制御の最大値を同様に切り捨てることで可能になります。
No.1
- 回答日時:
こんにちは
添付図が正しいのなら、元データはC1セルから5行分ずつのはず。
これに対して、
>myList = Range("C2", Range("C" & Rows.Count).End(xlUp))
としているので、例示の図で言えば、C2:C15の範囲の値を取得しています。
出力する際に、1行分ずれてしまうし、最後に値が存在しないのでエラーになる。
・・ということが起きていると思いますが?
とりあえず、C1セルから取得するようにすれば、意図した結果になるでしょう。
別法として、G1セルに
=INDEX(OFFSET($C$1,ROW(A1)*5-5,0,5),COLUMN(A1))&""
の関数式を入れておいて、G:K列の適当な行までフィルコピーしておけば、
VBAを実行しなくても、入力内容が即時に反映されるようになります。
(365環境なら、配列計算式にしておけばフィルコピーも不要になります)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) A2~I4179列にあるリストを支社名ごとにシートに分けたいです。 各シート名はA列にある支社名とし 3 2023/08/29 16:46
- Visual Basic(VBA) VBA listBoxについて 2 2024/03/26 16:14
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Excel(エクセル) Excel データの並び替え 1 2024/01/28 18:11
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
このQ&Aを見た人はこんなQ&Aも見ています
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
単二電池
あなたの家に何本ありますか?
-
あなたが好きな本屋さんを教えてください
どのくらいの規模間で、どのような本が並んでいるか、どのような雰囲気なのかなどなど...
-
ExcelVBAマクロで実行した時の疑問
Visual Basic(VBA)
-
時間短縮のために、テキストファイルの入出力をメモリを使って出来ないですか?
Visual Basic(VBA)
-
VBAコードのインデント表示
Visual Basic(VBA)
-
-
4
IF文、条件分岐の整理方法
Visual Basic(VBA)
-
5
VBA初心者です。次のVBAコードで、17行目を削除したいのですがうまく動きません 改善策を教えてく
Visual Basic(VBA)
-
6
Excel_VBAについて質疑です。(for~next)
Visual Basic(VBA)
-
7
VBAの間違い教えて下さい
Visual Basic(VBA)
-
8
Visualbasicの現状について教えてください
Visual Basic(VBA)
-
9
VBAのエラー表示の対処法について
Visual Basic(VBA)
-
10
データチェックを行うエクセルマクロをおしえてほしい
Excel(エクセル)
-
11
サブフォルダに格納されているファイルを、ファイル名ごとに条件分岐させたい
Visual Basic(VBA)
-
12
[Excel VBA]特定の条件で文字を削除&残す処理をするファイルを作成したいです
Visual Basic(VBA)
-
13
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
14
VBA 2次元配列の出力
Visual Basic(VBA)
-
15
Excelを無料で使うには? パソコン購入して、マイクロソフトに登録して そのままExcelがデスク
Excel(エクセル)
-
16
再質問です。マクロの修正箇所を教えてください。
Excel(エクセル)
-
17
Vba ファイル書き込み時に書き込みエラーを回避する方法を教えてください
Visual Basic(VBA)
-
18
pdfファイルの複数添付 引数の型
Visual Basic(VBA)
-
19
【Excel】版が同じ事を示す番号を生成したい
Excel(エクセル)
-
20
エクセル タブの下のメニューを選択 実行するコード
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】切取りの場合、形式...
-
マクロVBAについて、コードを教...
-
Excel 範囲指定スクショについ...
-
改行文字「vbCrLf」とは
-
Excelマクロで使うVBAコードを...
-
VBAでFOR NEXT分を Application...
-
testファイル内にある複数のpng...
-
エクセルのマクロについて教え...
-
ExcelVBAでパワポを操作したい
-
[VB.net] ボタン(Flat)のEnable...
-
VBA ユーザーフォーム ボタンク...
-
(EXCEL超初心者)EXCELの関数(ま...
-
【マクロ】値を渡されたプロシ...
-
Excelのマクロについて教えてく...
-
Vba FileSystemObject オブジェ...
-
ExcelのVBAコードについて教え...
-
VBAでユーザーフォームを指定回...
-
【ExcelVBA】5万行以上のデー...
-
Excelマクロで使うVBAコードを...
-
ダブルクリックで貼り付けた画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのマクロについて教えてく...
-
現在のブックを閉じないで、マ...
-
算術演算子「¥」の意味について
-
VBAの「To」という語句について
-
以下のプログラムの実行結果は...
-
マクロVBAです。 どなたかコー...
-
VBAでFOR NEXT分を Application...
-
VBAについてです。 どなたかご...
-
質問58753 このコードでうまく...
-
ダブルクリックで貼り付けた画...
-
VBAの質問(Msgboxについて)です
-
エクセルのVBAコードについて教...
-
Excelのマクロについて教えてく...
-
エクセルVBA 段落番号自動取得方法
-
えくせるのVBAコードについて教...
-
ExcelのVBAコードについて教え...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】モジュール変数の記...
-
Vba FileSystemObject オブジェ...
-
Vba WorkBooks.Openについて教...
おすすめ情報
いつも書込みありがとうございます。m(_ _"m)
すみません。添付の図が間違っていました。実際には1行目には項目がはいっているため、やはりC2からになります。申し訳ありません。
>myList = Range("C2", Range("C" & Rows.Count).End(xlUp))
不思議なことに4項目のときは問題なく動いているんですが、項目を5つにすると
稼働しなくなるんです。(GからKにはデータはきちんと表示されるのですがそのあとエラーメッセージ「インデックスが有効な範囲にありません)が表示されその後の処理が稼働しない)
デバック内容については添付します。
あと、関数ありがとうございます。処理はできました。
ただデータが大量のため、関数だとファイルがかなり重くなっていました。
何かまたアドバイスがありましたらよろしくお願いします。
理由それだったんですね。B列に項目の文字データはあるのにC列のデータが入ってないから
動かなかったのが判明しました。
その箇所を行を選んで削除したらエラーメッセージでなくなりました。
勉強になりました。
ありがとうございました。