簡體   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