【问题标题】:Placing unique text from separate worksheet into looped column headers in VBA将单独工作表中的唯一文本放入 VBA 中的循环列标题中
【发布时间】:2016-07-13 15:56:31
【问题描述】:

我正在尝试从单独的工作表中获取一列,并将其仅及其唯一值复制到另一个工作表中作为列标题。现在,我的代码在 reference1 中创建唯一值并尝试将它们复制到 Sheet1 作为列标题,但由于某种原因,我的范围仅将 reference1 数据中的第一行循环(图片显示它只是不断循环 title1)到每一列表 1 中的标题。如果我在 with wsDB 语句中放置“Transpose(arrValues)”,它只会放置第一行数据,如果我在 with 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

【问题讨论】:

    标签: vba excel dynamic unique


    【解决方案1】:

    您正在遍历单个单元格,因此您不需要每次都使用整个数组。由于只有一个字段要填充,因此每次都会采用数组的第一个条目。使用数组的适当条目:

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

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

    【讨论】:

    • 我试过了,但它总是告诉我下标超出范围
    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多