【问题标题】:How to extract column from cell (Excel, VBA)如何从单元格中提取列(Excel,VBA)
【发布时间】:2017-04-22 10:31:27
【问题描述】:

我在尝试编写我的第一个 Excel VBA 宏时遇到了(运行时错误“1004”:应用程序定义或对象定义错误)错误。我已经查看了有关堆栈溢出和其他站点的类似问题,但我的问题似乎比其他问题更基本。

目前,我正在尝试从一张纸的两个单元格中获取数据并将它们写入另一张纸。我知道尝试查找我按单元格或行引用的单元格的列或行是不必要的,但最终我将使用 for 循环并将特定的单元格引用替换为变量。

这是我拥有的两行代码:

Worksheets("Sheet2").Range("A1").Value = Worksheets("Sheet1").Range("A" & Worksheets("Sheet1").Range("B2").Row).Value
Worksheets("Sheet2").Range("B1").Value = Worksheets("Sheet1").Range(Worksheets("Sheet1").Range("B2").Column & "1").Value

第一行运行良好。它将 Sheet1 的 A2 写入 Sheet2 的 A1。 第二行不运行,不将Sheet1的B1写入Sheet2的B1,引用错误,不知道为什么。

感谢您的宝贵时间和帮助!

【问题讨论】:

    标签: excel vba range


    【解决方案1】:

    .Columns 属性返回一个整数,而不是一个字母。如果要定义具有数字行和数字列的范围,请使用 Range.Cells property

    Worksheets("Sheet2").Range("B1").Value = Worksheets("Sheet1").Cells(1, Range("B2").Column).Value
    

    我想这样做有一个更大的目的,但它是非常冗长的代码。

    【讨论】:

      【解决方案2】:

      你的问题的最后几行说你想用 Sheet1-A2 填充 Sheet2-A1,用 Sheet1-B1 填充 Sheet2-B1

      最直接的方法是

      Worksheets("Sheet2").Range("A1") = Worksheets("Sheet1").Range("A2")
      Worksheets("Sheet2").Range("B1") = Worksheets("Sheet1").Range("B1")
      

      【讨论】:

        【解决方案3】:

        我和你一样是 VBA 的初学者。您无需了解 VBA 中的所有内容即可有效地使用它。我通过录制它制作了我的第一个宏,它确实有效(但效率极低)。

        我遇到了与您类似的问题:在另一个工作表上查找数据。我创建了以下函数:

        函数 GetMyNumber(C3ll) MyCol = C3ll.Column GetMyNumber = MyCol 结束函数

        要在电子表格中使用它,只需在某个单元格中输入公式,例如 D5,

        =GetMyNumber(D5)

        当您重新计算时,数字 4 会出现在单元格 D5 中。如果你把D5单元格复制到F3单元格,你会在F3中看到=GetMyNumber(F3),然后calculate会返回一个6。当然你也可以往下填或跨,参数改成公式所在的单元格。如果需要,您可以使用引用任何单元格的参数进行偏移。

        一旦你得到这个工作,你可以插入代码来做你的匹配和其他任务,利用你的列号 MyCol 从另一个工作表中提取数字。请记住,MyCol 是一个整数。

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-12-02
          • 1970-01-01
          • 2019-03-03
          • 2011-08-04
          • 2017-06-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多