我要做的是获取一列数据并将其转换为单个标题行,但是将每个记录空间分开,以便“#1; Sheet1' A1 - > ' Sheet2' B1,' Sheet1' A2 - > ' Sheet2' G1等。 (即每隔5列间隔一次)
我是全新的,所以我正在玩一个循环,以便:
Dim i As Integer
Dim j As Integer
i = 1
j = 1
Do While i < 200
Cells(1, i + 1).Value = "='Project List'!A1"
i = i + 5
j = j + 1
Loop
我试图使用Int&#39; j&#39;作为光标通过&#34; =&#39;项目列表&#39;!A1&#34;但似乎找不到办法。我试图录制一个宏,但它使用的是FormulaR1C1 =&#34; =&#39;项目列表&#39;!RC [-1]&#34;格式,我无法弄清楚R1C1的步骤是如何引用的。 200是一个任意数字,所以我将捕获整个项目列表,我仍然试图找到一个&#34;重复空白&#34;参考风格。
有没有人对如何浏览我的数据列有什么建议?环?有没有更好的方法呢?
谢谢,
戴恩
答案 0 :(得分:1)
有很多方法可以做到这一点,但你的方法是一种可行的方法,稍作修改。您应该创建Worksheet对象以引用输入和输出工作表。我的代码还实现了您请求的重复直到空白逻辑。如您所见,我注释掉了第一个outWS行。这两行中的任何一行都可以完成这项任务。如果需要动态更新值,请保留公式1。否则使用另一个。显然,您可以根据需要更改Book7.xlsm和Sheet2。如果代码与数据位于同一电子表格中,您还可以将Workbooks("Book7.xlsm")
换成ThisWorkbook
。
Sub transposeAndSpace()
Dim i As Integer
Dim j As Integer
Dim inWS As Worksheet, outWS As Worksheet
i = 1
j = 1
Set inWS = Workbooks("Book7.xlsm").Worksheets("Project List")
Set outWS = Workbooks("Book7.xlsm").Worksheets("Sheet2")
Do While inWS.Cells(j, 1).Value <> ""
'outWS.Cells(1, i + 1).Formula = "='Project List'!A" & j
outWS.Cells(1, i + 1).Value = inWS.Cells(j, 1).Value
i = i + 5
j = j + 1
Loop
Set inWS = Nothing
Set inWS2 = Nothing
End Sub
答案 1 :(得分:0)
假设Do / While循环适合您:
i = 1
j = 1
Do While i < 200
Worksheets("Sheet2").Cells(1, i + 1).Value = "='Project List'!" & Range("A1").Offset(,j).Address
i = i + 5
j = j + 1
Loop
当我和我j = 1,这应该产生:
Worksheets("Sheet2").Cells(1, i + 1).Value --> Sheet2.Range("B1").Value
它将提出公式:
"='Project List'!$A$1`
当i = 6,j = 2时,应该产生:
Worksheets("Sheet2").Cells(1, i + 1).Value --> Sheet2.Range("G1").Value
它将提出公式:
"='Project List'!$A$2`
等