[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データの転記先セルが連続でない(E3,G3,E5,G5..)場合の関数』(ま)
セルB3:B12に10個のデータがあります。(数字、ひらがななど複数文字種)
そのデータを転記したいのですが、転記先のセルは連続ではなく、(E3,G3,E5,G5..)の順です。
この場合、どのようなVBA関数が使用できるのでしょうか?
< 使用 Excel:Office365、使用 OS:Windows10 >
Dim rngFrom As Range
Dim rngTo As Range
Dim c As Range
Dim i As Long
Set rngFrom = Range("B3:B6")
Set rngTo = Range("E3,G3,E5,G5")
For Each c In rngFrom
i = i + 1
rngTo.Areas(i).Value = c
Next
End Sub
10個くらいなら、10行書いてもいいとは思いますが。。。。
むりやり^^;
(まっつわん) 2020/05/07(木) 15:39
参考に
Sub Test2()
Dim i As Long
For i = 1 To 10
Range("E3").Offset(((i - 1) \ 2) * 2, ((i - 1) Mod 2) * 2).Value = Cells(i + 2, "B").Value
Next
End Sub
(ピンク) 2020/05/07(木) 15:51
こんにちは ^^
かぶりましたが。。。配列版です。。。ごりおしですが。。。^^;
Option Explicit
Sub OneInstanceM2()
Const zProgramID As String = "IJ00003.xlsm"
Dim zTb As Workbook
Dim i As Long
Dim zAary() As Variant
Dim zVar As Variant
Set zTb = Workbooks(zProgramID)
zAary = Array("E3", "G3", "E5", "G5", "E7", "E8", "F3", "H3", "H5", "H7")
With zTb.Worksheets("Sheet1")
.Range("C:Z").Clear
For Each zVar In .Range("B3:B12")
.Range(zAary(i)) = zVar.Value
i = i + 1
Next
End With
Set zTb = Nothing
Erase zAary
End Sub
(隠居じーさん) 2020/05/07(木) 15:56
参考に2
Sub Test3()
Dim i As Long
For i = 1 To 10
Range("E:G").Cells((i - 1) * 3 + 7 + (i Mod 2 = 0)) = Cells(i + 2, "B").Value
Next
End Sub
(ピンク) 2020/05/07(木) 16:39
ピンク様」
記入していただいたプログラムですが、
仮にG3⇒E5⇒G5⇒..の順で、E3を飛ばして転記させたい場合は
どうすればよいでしょうか?
Offsetの式を作り上げることができず、、、、
ぜひご教授いただけますと幸いです。
(ま) 2020/05/07(木) 16:54
>仮にG3⇒E5⇒G5⇒..の
For i = 1 To 10
Range("E3").Offset((i \ 2) * 2, (i Mod 2) * 2).Value = Cells(i + 2, "B").Value
Next
(ピンク) 2020/05/07(木) 17:40
>Range("E3").Offset((i \ 2) * 2, (i Mod 2) * 2)
For i = 1 To 10
MsgBox "iが" & i & "の時、セルE3に対し" & vbCrLf & _
"下に" & (i \ 2) * 2 & vbCrLf & _
"左に" & (i Mod 2) * 2
Next
(ピンク) 2020/05/07(木) 18:23
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.