【问题标题】:Copying a String Array into a Range of cells (in MS Excel using VBA)将字符串数组复制到一系列单元格中(在 MS Excel 中使用 VBA)
【发布时间】:2018-04-06 08:04:59
【问题描述】:

我可以使用For 构造循环遍历字符串数组元素并将它们的内容复制到范围的各个单元格中;但是有没有更简单的方法可以直接将字符串数组项复制到 Range 中?

Range to string array 的问题与我正在尝试做的完全相反。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这样

    Sub StringArrayToRange()
    
        Dim strArr(3) As String
        strArr(0) = "one"
        strArr(1) = "two"
        strArr(2) = "three"
    
        Range("A1:A" & UBound(strArr) + 1) = WorksheetFunction.Transpose(strArr)
    
    End Sub
    

    另外,this 获取更多示例和教程

    编辑:
    这个documentation 解释了为什么使用WorksheetFunction.Transpose

    【讨论】:

    • 您好,谢谢您的链接和代码。我稍微调整了一下,不太明白为什么需要WorksheetFunction.Transpose?没有该功能,我的示例似乎可以正常工作
    • 嗨@Santosh - WorksheetFunction.Transpose 如何在上面的代码中提供帮助。我发布的示例在没有它的情况下似乎可以正常工作。它是否有助于旧版本的兼容性?
    • @KentPawar 请参考我答案中的链接,但short 故事shorter(呵呵)一维数组在horizontal 视图中,因此您将其转换为垂直技术上正确
    • 谢谢@mehow.. 现在看看。
    • Argh.. 我刚刚意识到您的代码需要WorksheetFunction.Transpose,因为它正在输出到列中,而我的代码按行输出呵呵.. 我需要休息一下:p。谢谢,已将其标记为已回答
    【解决方案2】:

    你真的需要一个单元格中的数组吗?请记住,您可以定义一个等于数组值的变量:var1 = {v11, v12, v13;v21, v22, v23}

    然后将 "=INDEX(var1, 2, 2)" 放入任何到单元格中以获取值 v22。

    【讨论】:

    • 嗨@gssi,谢谢。我需要将数组项分别放入单个单元格中,但我想使用 VBA 来完成,并且目标工作表是动态创建的,因此无法正常工作。
    【解决方案3】:

    我有另一种方法:

    Dim Arr()
    With ThisWorkbook.Sheets("MassHeals")
      Arr = Array("1", "2", "3", "4")
      .Cells(1, 1).Resize(1, 4).value2 = Arr 
    End With
    

    数组设置在一行,我不使用转置。

    【讨论】:

    • 只有当你在一列中写一个一维数组时才需要转置,而不是像这里那样写成一行时需要转置
    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2017-11-30
    相关资源
    最近更新 更多