繁体   English   中英

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

[英]How to extract column from cell (Excel, VBA)

尝试编写我的第一个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,引用该错误,我不确定为什么。

感谢您的时间和帮助!

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

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

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

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

最直接的方法是

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

我和您一样都是VBA的初学者。 您无需了解VBA的全部知识即可有效地使用它。 我通过录制它制作了我的第一个宏,它起作用了(但是效率很低)。

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

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

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

= GetMyNumber(D5)

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

一旦完成此工作,就可以插入代码以进行匹配,并执行其他任务,这些任务利用列号MyCol从其他工作表中提取编号。 记住,MyCol是一个整数。

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM