如何从单元格中提取列(Excel,VBA)

时间:2016-03-27 16:40:20

标签: excel vba range

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

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

以下是我的两行代码:

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,引用错误,我不确定原因。

感谢您的时间和帮助!

3 个答案:

答案 0 :(得分:2)

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

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

我认为这有一个更大的目的,但就其而言,它是非常冗长的代码。

答案 1 :(得分:0)

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

最直接的方式是

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

答案 2 :(得分:0)

我和你一样是VBA的初学者。您无需了解VBA中的内容即可高效使用它。我通过RECORDING创建了我的第一个宏,它起作用了(但是效率很低)。

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

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

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

= GetMyNumber(D5)

重新计算时,数字4显示在单元格D5中。如果将单元格D5复制到单元格F3中,您将在F3中看到= GetMyNumber(F3),并且calculate将返回6.当然您可以填充或跨越,参数将更改为公式所在的单元格。如果需要,可以使用引用任何单元格的参数进行偏移。

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

希望这会有所帮助。