首页 > 解决方案 > 我需要 VBA 帮助将脚本中的输出范围设置为数据表中定义的表值

问题描述

我想获取数据表(CellValue 列)上一列的值并将其粘贴“x”(同一表上的 URL # 列)次数。

我遇到的问题是在哪里粘贴它。

我可以定义一个范围/表格来放入信息,但我想动态地这样做。

我试图用Hlookup一个值来定义数据表,但无法对其进行排序。我通过更改在同一数据表(表)的列中获得了输出表值

Set OutRng = Range("URL_Builder[Table]").value' 

定义单个位置,例如“C38”。我得到了想要的结果,但我需要将信息实际粘贴到表格列中列出的正确表格中。

下面是我正在使用的 VBA 示例,以及我正在使用的表的快照。

我必须在一个对 mac 友好的 VBA 中构建它。

示例输入表: 样品表

示例 VBA:

Sub CopyData()


Dim Rng As Range
Dim InputRng As Range, OutRng As Range



Set InputRng = Range("URL_Builder[[CellValue *Used for Formula*]:[Table]]")
Set OutRng = Range("URL_Builder[Table]").value

For Each Rng In InputRng.Rows
    xValue = Rng.Range("A1").Value
    xNum = Rng.Range("B1").Value
    OutRng.Resize(xNum, 1).Value = xValue
    Set OutRng = OutRng.Offset(xNum, 0)
Next
End Sub

输出应该是:

样本输出

我也试过

Sub CopyData()


Dim Rng As Range
Dim InputRng As Range, OutRng As Range

'Sets the input range
Set InputRng = Range("URL_Builder[[CellValue *Used for Formula*]:[Table]]")

'Sets the output range
If Range("URL_Builder[Table]") = "DataTable1[CellValue]" Then
    Set OutRng = Range("DataTable1[CellValue]")
    Else

If Range("URL_Builder[Table]") = "DataTable2[CellValue]" Then
Set OutRng = Range("DataTable2[CellValue]")

End If
End If


For Each Rng In InputRng.Rows
    xValue = Rng.Range("A1").Value
    xNum = Rng.Range("B1").Value
    OutRng.Resize(xNum, 1).Value = xValue
    Set OutRng = OutRng.Offset(xNum, 0)
Next
End Sub

此代码会将我需要的信息放入表格中,但我不能“硬编码”表格此代码必须能够根据单元格值确定表格

Sub CopyData()


Dim Rng As Range
Dim InputRng As Range, OutRng As Range

'Sets the input range
Set InputRng = Range("URL_Builder[[CellValue *Used for Formula*]:[Table]]")

'Sets the output range
Set OutRng = Range("DataTable1[CellValue]")


For Each Rng In InputRng.Rows
    xValue = Rng.Range("A1").Value
    xNum = Rng.Range("B1").Value
    OutRng.Resize(xNum, 1).Value = xValue
    Set OutRng = OutRng.Offset(xNum, 0)
Next
End Sub

标签: excelvba

解决方案


推荐阅读