[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データの転記先セルが連続でない(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.