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

我试图编写我的第一个Excel VBAmacros时遇到(运行时错误'1004':应用程序定义或对象定义的错误)错误。 我在堆栈溢出和其他网站上看过类似的问题,但是我的问题似乎比其他问题更基本。

目前,我试图从一张纸上的两个单元格中获取数据,并将其写入另一张纸上。 我明白,试图find一个单元格或单元格的行或单元格或行的引用是不必要的,但最终我会使用for循环,并将replace特定的单元格引用的variables。

这里是我有两行代码:

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,引用错误,我不知道为什么。

感谢您的时间和帮助!

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

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

我想这个有更大的目的,但是当它坐落时,它是非常冗长的代码。

你的问题的最后一行是说你想用Sheet1-B1填充Sheet2-A1和Sheet1-B1填充Sheet2-B1

最直接的方法是

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

我和你一样,是VBA的初学者。 你不需要知道在VBA中使用它就可以有效地使用它。 我通过logging来创build我的第一个macros,并且工作(但是效率很低)。

我有一个类似于你的问题:在另一个工作表上查找数据。 我创build了以下function:

Function GetMyNumber(C3ll)MyCol = C3ll.Column GetMyNumber = MyCol End Function

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

= GetMyNumber(D5)

当您重新计算时,数字4出现在单元格D5中。 如果您将单元格D5复制到单元格F3中,您将在F3中看到= GetMyNumber(F3),并计算将返回6.当然,您可以填充或跨越,将参数更改为公式所在的单元格。如果你愿意的话,你可以通过引用任何单元格的参数进行偏移。

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

希望这有助于。