表1(A1:A20)に飛び飛びに入ったデータを表2(E11:E30)に上から順に空白が無いように転記するマクロは下記の通りなんとか作れました。
ただし、これが正しいやり方かどうかは自信がありませんのでもっといい方法があればご教示ください。
次にこれが、表1がA1:B10と2列になっており、表2も同じくE11:D20と2列になっている場合のやり方(E11から始まりE20まできたら次はD11以降に転記する)が見当がつきません。どのように記述すればいいのでしょうか?
Sub 転記()
Dim i As Integer, n As Integer
n = 10
With Worksheets("DATA1")
For i = 1 To 20
If .Range("A" & i) <> "" Then
n = n + 1
.Range("E" & n) = .Range("A" & i)
End If
Next i
End With
End Sub
よろしくお願いします。
No.3
- 回答日時:
短くなるように
Sub test01()
Dim c As Range
Dim r(3)
r(1) = 1: r(2) = 1
For Each c In Worksheets("sheet1").Range("a1:b10")
If c = "" Then
Else
Worksheets("sheet2").Cells(r(c.Column), c.Column) = c
r(c.Column) = r(c.Column) + 1
End If
Next
End Sub
'--------
Sheet1が何列になろうとも
(A)Dim r(3)の3を4等と、r(2)=1のところをr(3)=1、・・などと増やす。
(B)Range(A1:N50)等と増やす
だけで手直しが少ないです。
No.2
- 回答日時:
こんにちは。
私はEXCELの機能をなるべくそれを生かすようにします。たとえば、ワークシート関数をつかって、次のようにFor-Next文を廃止できますね。Sub 転記()
Range("E11").FormulaR1C1 = "=INDEX(R[-10]C[-4]:R[8]C[-4],ROW()-10,1)"
Range("E11").AutoFill Destination:=Range("E11:E20"), Type:=xlFillDefault
Range("E11:E20").Value = Range("E11:E20").Value
End Sub
No.1ベストアンサー
- 回答日時:
プログラムなんて動けばいいのです。
分かりやすさは、その次。
Dim i As Integer, n As Integer
Dim a,b as string
Dim i2 As Integer, n2 As Integer
n = 10
a="A"
b="E"
i2=0
n2=0
With Worksheets("DATA1")
For i = 1 To 20
if i=11 then
a="B"
i2=10
end if
If .Range(a & i - i2) <> "" Then
n = n + 1
if n=21 then
b="D"
n2=10
end if
.Range(b & n - n2) = .Range(a & i - i2)
End If
Next i
End With
End Sub
未確認ですが・・・。
あと cells を使う方法もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
トリッピ?とっけん? チーム分...
-
部活のお守りにフェルトで!!
-
いちいち報告してくる友人
-
FULL HD 1080Pの取り扱い説明書...
-
dヘルスケアで貯めたdポイント...
-
ポアソン分布に関するものです、
-
EOKIOのヘッドフォンのペアリン...
-
MacBook 入力ソースに日本語がない
-
教えてgooで、しつもん、回答を...
-
COUNTIFS関数で結果が1多い
-
A4の紙を二枚繋げてワードで横...
-
「おかしな意見」を論破したい...
-
羊毛を丸めて、突いて硬くして...
-
HP ProDesk 600 G1 SFF
-
MediaPad M3 Lite s
-
ACCESSのテーブルの行と列を入...
-
本気でタイムリープする方法教...
-
PDFファイルの文字列を抽出する...
-
Accessのアンインストール方法
-
メールアドレスのURLのクリック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
いちいち報告してくる友人
-
お節介な人に対して、素っ気な...
-
dヘルスケアで貯めたdポイント...
-
Webサーバ(yuzu.uja.or.jp)に...
-
A4の紙を二枚繋げてワードで横...
-
合理主義と理性主義の違いはな...
-
FULL HD 1080Pの取り扱い説明書...
-
羊毛を丸めて、突いて硬くして...
-
「おかしな意見」を論破したい...
-
おなにーが気持ちよくない
-
MacBook 入力ソースに日本語がない
-
ステーキ肉をエリンギで柔らか...
-
マーケティング、web広告用語に...
-
グーグルマップの常時、一回の...
-
エクセル関数で数字の下一桁が...
-
自己啓発の本は自慢が多いですか?
-
MediaPad M3 Lite s
-
コリドラスのお腹の一部分が膨...
-
気絶方法
-
HP ProDesk 600 G1 SFF
おすすめ情報