将独立工作表中的独特文本放入VBA中的循环列标题中

我试图从一个单独的工作表中取出一列,并将其只有其唯一值复制到另一个工作表作为列标题。 现在,我的代码在reference1中创build了唯一的值,并尝试将它们复制到Sheet1中作为列标题,但由于某种原因,我的范围只循环引用1数据中的第一行(图片显示它只是连续循环title1)表单1中的标题。 如果在wsDB语句中放置“Transpose(arrValues)”,它只放置第一行数据,如果在wsDB语句中放置“Transpose(j)”,它只会放置reference1工作表中的实际编号列。

在这里输入图像说明

Sub uniqueyes() Dim wsRef As Worksheet Dim wsDB As Worksheet Set wsRef = Worksheets("reference1") Set wsDB = Worksheets("Sheet1") With wsRef .Range("F1:F60").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("I1"), unique:=True Dim arrValues As Variant arrValues = .Range("I2", .Range("I" & .Rows.Count).End(xlUp)) End With For i = 1 To ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row If Cells(i, 4) = "Title" Then For j = 1 To (UBound(arrValues)) Step 1 With wsDB .Range(.Cells(i, j * 4 + 2), .Cells(i, j * 4 + 4)).Value = Application.WorksheetFunction.Transpose(arrValues) End With Next j End If Next i End Sub 

你正在循环单个单元格,所以你不需要每次都使用整个数组。 由于只有一个字段可以填充,因此每次都会占用数组的第一个条目。 使用数组的相应条目:

 .Range(.Cells(i, j * 4 + 2), .Cells(i, j * 4 + 4)).Value = arrValues(j) 

请注意,因为arrValues来自列,所以它是一个一维数组。