エクセルのマクロで質問です。
下記のように入力されています
A B C D
1 あ 田中 2000 N3
2 い 中嶋 1500 Q3
3 う 吉田 1600 U3
4 え 石川 1800 N11
5 お 横山 1500 Q11
6 か 鈴木 1600 U11
7 き 中村 2500 N19
8 く 山田 1200 Q19
9 け 橋本 1400 U19
・・・・(500行くらいあります)
この表のA1:C1をN3に行列を入換えて貼り付け、
A2:C2をQ3に行列を入換えて貼り付け・・・
のように、ABC列の内容を、D列に入力されているセル番地に貼り付けたいのです。
INDIRECT関数など使ってみましたが、どうにも出来そうにありません。
これをなんとかマクロで出来ないものでしょうか。
困ってます。お願いします。
No.1ベストアンサー
- 回答日時:
例えばこんなマクロでしょうか?
Sub Macro2()
Dim idx As Long
On Error Resume Next
For idx = 1 To Range("A65536").End(xlUp).Row
Cells(idx, "A").Resize(1, 3).Copy
Range(Cells(idx, "D")).PasteSpecial , Transpose:=True
Next idx
Application.CutCopyMode = False
End Sub
早速のご回答ありがとうございます。
Rangeとcellsの組み合わせが、自分で調べても全然分からずに苦労しておりました。
簡単な記述で出来るものなのですね。勉強になりました。
No.3
- 回答日時:
例データ(質問のまま)
ABCD
あ田中2000N3
い中嶋1500Q3
う吉田1600U3
え石川1800N11
お横山1500Q11
か鈴木1600U11
き中村2500N19
く山田1200Q19
け橋本1400U19
ーーー
VBAコード
標準モジュールに
Sub test01()
i = 2
Do While Cells(i, "D") <> ""
Sheets("Sheet1").Range(Cells(i, "D")) = Cells(i, "A")
Sheets("Sheet1").Range(Cells(i, "D")).Offset(1, 0) = Cells(i, "B")
Sheets("Sheet1").Range(Cells(i, "D")).Offset(2, 0) = Cells(i, "C")
MsgBox "AA"
i = i + 1
Loop
End Sub
ーー
結果(初めの3つN,O,U列のみ)
あいう
田中中嶋吉田
200015001600
・・・
#1のご回答と別のコードを考えました。
前回に続いてご回答いただきありがとうございます。
変数の範囲にしても色々な方法があるものですね。
いつも勉強になります。
(申し訳ないですが、お礼ポイントは時間の早かった方から付けさせていただきました)
No.2
- 回答日時:
こんばんは。
INDIRECT でも出来そうな気がするのですが、やはりややこしいかもしれません。
以下は、D列の表示は無視して貼り付けるものと、D列の表示よるものと両方を作ってみました。コメントブロック(')を入れ替えれば、アドレス表示による貼り付けになります。
Sub ChangePlacement()
Dim ar As Variant
Dim i As Long
Dim Cols As Variant
Cols = Array(21, 14, 17) '列データ 'N,Q,U
Application.ScreenUpdating = False
With ActiveSheet
For i = 1 To .Range("A65536").End(xlUp).Row
ar = .Cells(i, 1).Resize(, 3).Value '配列に差し替え
.Cells(Int((i - 1) / 3) * 8 + 3, Cols(i Mod 3)).Resize(3).Value _
= WorksheetFunction.Transpose(ar) '行列入れ替え
'.Range(.Cells(i, 4).Value).Resize(3).Value = _
WorksheetFunction.Transpose(ar) 'D列の表示による
Next i
End With
Application.ScreenUpdating = True
End Sub
いつもお世話になります。ありがとうございます。
配列は私にはよく分からないのですが、やってみるとバッチリできますね。
この記述を見て勉強します。
(申し訳ないですが、お礼ポイントは時間の早かった方から付けさせていただきました)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) 4月~3月まで12カ月横に並んだ表へ指定範囲を貼り付けたい。 Sheet2の指定範囲、Range(" 2 2022/11/30 16:37
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) 別シートに順番で貼り付け 2 2023/04/13 19:53
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) エクセルのマクロ作成について教えてください 5 2023/02/20 00:39
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
エクセルで二つの数字の小さい...
-
LOOKUP関数を使えばいいのでし...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
VBAで文字列を数値に変換したい
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
エクセルの並び変えで、空白セ...
-
EXCELで 一桁の数値を二桁に
-
エクセルの表から正の数、負の...
-
Excel、市から登録している住所...
-
エクセルで文字が混じった数字...
-
A列がない・・・A列が非表示に...
-
エクセルの項目軸を左寄せにしたい
-
エクセルで一列おきに空白列を...
-
【ACCESS/必須条件とOR条件を組...
-
エクセルの隣り合う列のグループ化
-
エクセル(勝手に太字になる)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
エクセル 同じ値を探して隣の...
-
VBAで文字列を数値に変換したい
-
エクセルの並び変えで、空白セ...
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
[関数得意な方]教えて下さい・...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 時間帯の重複の有無
-
Excelにてある膨大なデータを管...
おすすめ情報