![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
並べ替えするには?
ただいまVBA学習中です。
sheet1に次のような文字列がセルに入力されているとします。
3列で30行あります。
A列 B列 C列
1行 あ い う
2行 え お か
...以下30行まで続く。
これらを
sheet2に
A列
あ
い
う
え
お
か
のようにひとつの列へ縦にするにはどのような記述になりますか?
私なりの考え方ですが
セルのスタート位置はシート1のA1とします。
シート1にて
・あ い う と順番に配列に格納
・セルを左に2つ下に1つ移動
この動作を30回繰り返す(for next 使えばでいいですよね?)
シート2に移動してA1から下方向へ
格納された文字列を入力する。
と、考えてみたものの記述の仕方がわかりません。
力貸してください。
No.4ベストアンサー
- 回答日時:
> 追加の質問したいのですが・・・
こんな感じでどうですか。
実行時、どのシートがアクティブになっていても構わないコードになっていますが、
"Sheet1" アクティブが条件なら Sheets("Sheet1"). が不要でチョット簡単になります。
Sub test()
Dim Rw As Long
Dim Rw2 As Long
Dim MaxRow As Long
MaxRow = Range("E65536").End(xlUp).Row
If MaxRow = 1 Then Exit Sub
Sheets("Sheet2").Columns(1).ClearContents
Rw2 = 1
For Rw = 2 To MaxRow
With Sheets("Sheet2")
.Range("A" & Rw2).Value = Range("E1").Value
.Range("A" & Rw2 + 1).Value = Sheets("Sheet1").Range("E" & Rw).Value
.Range("A" & Rw2 + 2).Value = Sheets("Sheet1").Range("F1").Value
.Range("A" & Rw2 + 3).Value = Sheets("Sheet1").Range("F" & Rw).Value
.Range("A" & Rw2 + 4).Value = Sheets("Sheet1").Range("G1").Value
.Range("A" & Rw2 + 5).Value = Sheets("Sheet1").Range("G" & Rw).Value
.Range("A" & Rw2 + 6).Value = vbNullString
Rw2 = Rw2 + 7
End With
Next Rw
End Sub
No.3
- 回答日時:
相当、邪道ですがsheet2の1行目に見出しがあるとして
Sub test()
Dim rngS As Range
For Each rngS In ActiveSheet.UsedRange
rngS.Copy Sheets(2).Range("A65536") _
.End(xlUp).Offset(1)
Next rngS
End Sub
上記であれば何行でも可能ですが?
勘違いならすいません。
この回答への補足
追加の質問したいのですが、みなさまよいでしょうか。
E列 F列 G列
1行 問題 解答 解説
2行 あああ いいい ううう
3行 えええ おおお かかか
4行 ききき くくく けけけ
・・・このようなのが30行ぐらいあります。
今後も増えます。
とあるものを シート2のA列に
問題
あああ
解答
いいい
解説
ううう
「空白のセル」
問題
えええ
解答
おおお
解説
かかか
「空白のセル」
問題
ききき
解答
くくく
解説
けけけ
「空白のセル」
・・・以下繰り返し。
の場合はどうなるでしょうか?
ありがとうございます。
なんか、だんだん難しくなってきてる印象受けてます。
でもこれがわかるとなにかと便利なんでしょうね。
(1)
For Each rngS In ActiveSheet.UsedRange
の部分は「アクティブシートの記入済みセルそれぞれについて」という意味と解釈しました。
rngS.Copy Sheets(2).Range("A65536").End(xlUp).Offset(1)
はA列すべてって意味かな?たぶん。
で、正しく作動したのですが、なんか不思議な感じします。セルをひとつづつ指定せず、範囲という形で指定していますが、順序よく整列されてシート2に出力されました。
なんでだろ?
RANGEは 左から右 上から下 という順番で処理してくれているようですね。
No.1
- 回答日時:
こんばんは。
あくまでも一つの例です。
Public Sub MySort()
Dim MyStr(90) As String
Dim cnt As Integer
cnt = 1
For r = 1 To 30
For c = 1 To 3
MyStr(cnt) = Sheet1.Cells(r, c)
cnt = cnt + 1
Next c
Next r
cnt = 0
Sheet2.Activate
Range("a1").Select
For r = 1 To 90
Cells(r, 1).Value = MyStr(r)
Next r
End Sub
#1~#3の皆様、まずはお礼を申し上げます。
ただいま、皆様から教えていただいた内容を
もとに、VBAを動かしてます。
for each とrangeの使い方についての例文が
記載されているサイトも探してます。
自分用に書き換えしているのですが
ちょっとうまく動いてくれないで原因を
調べてます。
ですので配点はもう少しお待ちください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの表示形式を保ったま...
-
excelのマクロでrangeの選択が...
-
EXCELで2つの数値のうち大きい...
-
Excelで隣のセルと同じ内容に列...
-
PowerPointで表の1つの列だけ...
-
オートフィルターをかけ、#N/A...
-
エクセルで二つの数字の小さい...
-
エクセルで、2種類のデータを...
-
自分が待ってる列で自分の前の...
-
Excelで中央揃えが出来ない?
-
2つのエクセルのデータを同じよ...
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセル(勝手に太字になる)
-
Excelで半角の文字を含むセルを...
-
エクセルのオートフィルタで最...
-
エクセルかグーグルスプレッド...
-
Excel、市から登録している住所...
-
VBAで文字列を数値に変換したい
-
エクセルでの複数条件下での標...
-
エクセルの項目軸を左寄せにしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの表示形式を保ったま...
-
excelのマクロでrangeの選択が...
-
エクセル 1つのセル毎に入力...
-
Excel VBA For Each Next構文...
-
Excel2000 VBA ダブルクリック...
-
エクセルで赤い字のセルを抽出
-
エクセルの関数を連続コピー
-
Gメールの内容をスプレッドシ...
-
この関数文の意味を教えてもら...
-
エクセルのセル内にかいた関数...
-
VBA重複チェック
-
EXCEL(エクセル)で0.001以下...
-
ISERROR関数
-
VBAについて教えてくださいshee...
-
他のブックでマクロを実行する...
-
エクセルで別シートにある各々...
-
【Excel関数】商品コードと商品...
-
vbaにて並べ替えしたい。
-
#N/A表示を空白にしたいのです...
-
エクセルでこのような事できま...
おすすめ情報