Excel / VBA – 将列转置为在logging之间留下设置空格

我想要做的是取出一列数据,并将其转换为单个标题行,但是将每个logging分隔为“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'j'作为通过“='Project List'!A1”中的单元格引用的方式,但似乎无法find这样做的方法。 我试图录制一个macros,但它使用FormulaR1C1 =“='项目列表'!RC [-1]”格式,我不知道如何通过R1C1引用。 200是一个任意的数字,所以我将捕获整个项目列表,我仍然试图find一个“重复空白”的参考样式。

有没有人有任何build议如何通过我的数据列? 循环? 有没有更好的方法来做到这一点?

谢谢,
戴恩

有很多方法可以做到这一点,但是对于一些细微的修改,你的方法是可行的。 您应该创build工作表对象来引用您的input和输出工作表。 我的代码也实现了你所要求的重复直到空白逻辑。 正如你所看到的,我评论了第一个outWS行。 这两条线中的任何一条都可以完成这项工作。 如果需要dynamic更新值,请保留公式。 否则使用另一个。 显然,您可以根据需要更改Book7.xlsm和Sheet2。 如果代码与数据位于同一电子表格中,则也可以为ThisWorkbook交换Workbooks("Book7.xlsm")

 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 

假设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 

当i&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` 

等等