Excel VBA:将表格中的单元格值复制到具有条件的其他工作表上的表格中

我会为这个问题的大范围提前道歉,以及我可能创build的模糊性。 我想要创build一个macros,它沿着一个表格,如果一个特定的条件在该行的不同列中被满足,则复制一个单元格值到另一个表格中的表格。

基本上,如果条件等于表A中列C中的X,则将表A中列B的数字复制到表B中的列B.有2k +行。 表A中的列C始终为空或等于X,而表A中的列B在列表结束之前永远不会为空。 表B中的列B是空白的,行数将由表A中复制的行数决定。

我确信这将需要一个循环,但是对VBA来说是新的,我不确定我需要哪种循环types以及循环逻辑应该如何查找。 我怀疑一个Do Until是最容易的,因为表A中没有空白,直到列表结尾。 我迄今为止的最佳猜测:

Dim wsPAPS As Range Dim wsPAVA As Range Dim wsVNPN As Range Dim wkATTR As Workbook Set wkATTR = Workbooks("PARCEL_ATTR_MACRO-TEST.xlsm") Set wsPAPS = Sheets("PARCEL_ATTR_BASE").Range("PARCELSTAT") Set wsPAVA = Sheets("PARCEL_ATTR_BASE").Range("APO_VA_Properties_Vacant_Abandoned") Set wsVNPN = Sheets("VA_NAME").Range("L1_PARCEL_NBR") Do If wsPAVA = "Vacant/Abandoned" Then wsVNPN = wsPAPS End IF Loop Until wsPAPS = "" 

注意这个代码实际上不工作; 我被告知我有一个没有做的循环,不知道为什么。

我将非常感激在这方面提供的任何帮助。 谢谢,所有!

更新意图与范围variables是试图使引用特定列容易,但我得到一个应用程序定义或对象定义的错误。

请按照以下步骤,

  • 通过范围(cSheetName)定义desitination工作表/工作簿
  • 根据范围定义源工作表/工作簿(cFileLocWS)

  • 对于要进行的操作的行数可能高达100万行。

  • 添加循环不一定做,而一个简单的“为”会做。

“天开放 – 上校:S

'现有逻辑== $ T $ 1-I(n)+1
'$ T $ 1 – 月底date

 lRowCount = Sheets(cSheetName).Cells(Rows.Count, "I").End(xlUp).Row For rowIndex = 2 To lRowCount mDate = Sheets(cFileLocWS).Range(cMonthEndDate).Value strtDate = Sheets(cSheetName).Cells(rowIndex, "I").Value lResult = (mDate - strtDate) + 1 Sheets(cSheetName).Cells(rowIndex, "S").Value = lResult Next rowIndex 

希望这可以帮助。

尝试这个:

假设表名是:“TableA”和“TableB”和列B总是有一些数据。

 Sub Copy() Dim lr As Long, r As Long Set Sh1 = ThisWorkbook.Worksheets("TableA") Set Sh2 = ThisWorkbook.Worksheets("TableB") lr = Sh1.Cells(Rows.Count, "B").End(xlUp).row x = 2 For r = 2 To lr If Range("C" & r).Value = "X" Then 'Evaluate the condition. Sh2.Range("B" & x).Value = Sh1.Range("B" & r).Value 'ColumnB x = x + 1 End If Next r Sh2.Select End Sub