Excel VBA:如果数据与另一张工作表中的列中的值匹配,则复制行

Excel新手

在这里问了一个相关的问题
阿德莱德爵士为我提供了这个非常有用的解决方案。

所以现在,在这种几乎相似的情况下,我的工作簿中有2个excel表格。
[Xsheet] [1] Sheet1

我将遍历Sheet1中的名称和描述列,以查看它是否与XSheet的名称描述列中的值匹配(该列中可能有无限的数据行)。如果这样做,那么Sheet1中的“那个”行将被复制到新的Sheet2中。

我在以前的编码(由阿德莱德爵士提供)中做了一些修改,

Sub Procedure2()

Dim xsht As Worksheet
Dim sht As Worksheet 'original sheet
Dim newsht As Worksheet 'sheet with new data

Set xsht = ThisWorkbook.Worksheets("Xsheet")
Set sht = ThisWorkbook.Worksheets("Sheet1")
Set newsht = ThisWorkbook.Worksheets("Sheet2")

'Set dat = sht.Range("code").Cells(1,1)
Set main = xsht.Range("A1")
Set dat = sht.Range("A1")
Set newdat = newsht.Range("A1")

'initialise counters
i = 1
j = 1

'set heading on sheet2
newdat.Offset(0, 0).Value = dat.Offset(0, 0).Value 'copy code
newdat.Offset(0, 1).Value = dat.Offset(0, 2).Value 'copy title
newdat.Offset(0, 2).Value = dat.Offset(0, 3).Value 'copy date
newdat.Offset(0, 3).Value = dat.Offset(0, 4).Value 'copy name
newdat.Offset(0, 4).Value = dat.Offset(0, 5).Value 'copy descr
newdat.Offset(0, 5).Value = dat.Offset(0, 6).Value 'copy status

Do While dat.Offset(i, 0).Value <> "" 'loop row till code data goes blank
  If ((main.Offset(i, 0).Value = dat.Offset(i, 4).Value Or _
  main.Offset(i, 1).Value = dat.Offset(i, 5).Value) And dat.Offset(i, 6).Value = "active") Then 'check conditions
    newdat.Offset(j, 0).Value = dat.Offset(i, 0).Value 'copy code
    newdat.Offset(j, 1).Value = dat.Offset(i, 2).Value 'copy title
    newdat.Offset(j, 2).Value = dat.Offset(i, 3).Value 'copy date
    newdat.Offset(j, 3).Value = dat.Offset(i, 4).Value 'copy name
    newdat.Offset(j, 4).Value = dat.Offset(i, 5).Value 'copy descr
    newdat.Offset(j, 5).Value = dat.Offset(i, 6).Value 'copy status
    j = j + 1
  End If

  i = i + 1
Loop

提供的任何建议将不胜感激。谢谢你。
输出嗨,我试图运行更新的代码。
这是我的输出,但是有一个无效的情况,这是不正确的。
正确的输出应为4566、4987、4988。
我已经检查了代码,Idk出了什么问题

我没有Xsheet链接,因为我没有足够的声誉来制作2个以上的超链接

现在,我遍历Sheet1以查看其是否与Xsheet中的列匹配。
4566,它与名称col中的“ Adam”相匹配(因为它是名称描述,所以如果名称匹配则为匹配),并且(必须是活动的),所以它为
in。4899,Edward是一个匹配项(或任何描述),但不匹配主动,所以没有。
4987,与4566相同,它的Adam和active。
4988,Kris(不是比赛名称),但是al在Xsheet的描述中是有效的,所以它处于活动状态。4989
,Chris不是比赛名称,ttr不是比赛描述,即使是活动情况(我也不会接受) )

到目前为止,感谢您的指导。对此,我真的非常感激。

十亿字节

因此,在找出您真正在做什么之后。问题很简单:


“如果在数据表中找到了主列表上的名称或描述,并且该名称或描述也处于活动状态,则将其复制到新的表上”。

逻辑运算符:优先顺序

这是您最近评论的代码修订版。

Sub Procedure2()

Dim xsht As Worksheet
Dim sht As Worksheet 'original sheet
Dim newsht As Worksheet 'sheet with new data

Set xsht = ThisWorkbook.Worksheets("Xsheet")
Set sht = ThisWorkbook.Worksheets("Sheet1")
Set newsht = ThisWorkbook.Worksheets("Sheet2")

'Set dat = sht.Range("code").Cells(1,1)
Set main = xsht.Range("A1")
Set dat = sht.Range("A1")
Set newdat = newsht.Range("A1")

'initialise counters
Dim i, j, iRow As Integer   'instantiate and initialize the integers
i = 1
j = 1
iRow = 1

'set heading on sheet2
newdat.Offset(0, 0).Value = dat.Offset(0, 0).Value 'copy code
newdat.Offset(0, 1).Value = dat.Offset(0, 2).Value 'copy title
newdat.Offset(0, 2).Value = dat.Offset(0, 3).Value 'copy date
newdat.Offset(0, 3).Value = dat.Offset(0, 4).Value 'copy name
newdat.Offset(0, 4).Value = dat.Offset(0, 5).Value 'copy descr
newdat.Offset(0, 5).Value = dat.Offset(0, 6).Value 'copy status

Do While main.Offset(i, 0).Value <> "" Or main.Offset(i, 1).Value <> ""

  j = 1     'reset DataSheet pointer

  Do While dat.Offset(j, 0).Value <> ""

    If (main.Offset(i, 0).Value = dat.Offset(j, 4).Value _
    Or main.Offset(i, 1).Value = dat.Offset(j, 5).Value) _
    And dat.Offset(j, 6).Value = "active" Then

      newdat.Offset(iRow, 0).Value = dat.Offset(j, 0).Value 'copy code
      newdat.Offset(iRow, 1).Value = dat.Offset(j, 2).Value 'copy title
      newdat.Offset(iRow, 2).Value = dat.Offset(j, 3).Value 'copy date
      newdat.Offset(iRow, 3).Value = dat.Offset(j, 4).Value 'copy name
      newdat.Offset(iRow, 4).Value = dat.Offset(j, 5).Value 'copy descr
      newdat.Offset(iRow, 5).Value = dat.Offset(j, 6).Value 'copy status
      iRow = iRow + 1
    End If
    j = j + 1     'increment DataSheet pointer; fast moving; changing/resetting
  Loop

  i = i + 1     'increment XSheet pointer; slow moving outer loop; not resetting
Loop
End Sub

修订后的代码有四个更改通过在OUTER循环中添加了检查,以在“名称”字段中包含空格Or main.Offset(i, 1).Value <> ""在If语句中,将信息的评估位置从i到i_value更改为i到j_value在新工作表中添加了第三个计数器,用于将数据放置到新数据中,以便将数据复制到Sheet2。最后是嵌套循环(循环内的循环)。循环外:逐行查看主列表(xSheet);永不重复。内部循环:查看数据表以从上至下进行比较;重复“主列表”中的每个新行。


您甚至可以将If语句更改为考虑“活动”与“活动”或“ A”或“ a”。这是一个方便使用的下拉列表的地方,但这本身就是另一个问题。

If (main.Offset(i, 0).Value = dat.Offset(j, 4).Value _
Or main.Offset(i, 1).Value = dat.Offset(j, 5).Value) _
And (dat.Offset(j, 6).Value = "active" Or dat.Offset(j, 6).Value = "Active") Then

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel Vba - 如何将匹配的行从一张工作表复制并粘贴到另一张工作表中完全匹配的行下方

来自分类Dev

VBA Excel将行从一张工作表复制到另一张工作表中具有特定值的行

来自分类Dev

将 Excel 中匹配记录的行值从一张工作表复制到另一张工作表

来自分类Dev

如果它们在列标题上匹配,则将值从Excel中的一张表映射/复制到另一张

来自分类Dev

Excel,如果行值与另一张工作表上的 vlookup 值匹配,则求和

来自分类Dev

复制另一张Excel工作簿中的数据-复制一张纸而不是一张纸

来自分类Dev

无法将列中的所有数据复制到另一张表-Excel VBA

来自分类Dev

将大量行从一张工作表复制到另一张工作表,但Excel 2010中的空白行除外

来自分类Dev

excel vba-如果满足条件,则将具有各种形状的特定行复制/粘贴到另一张工作表

来自分类Dev

使用Excel中的按钮将信息从一张工作表复制到新行的另一工作表

来自分类Dev

从 Excel 文件中所有工作表的列中复制数据并将其粘贴到一张工作表中

来自分类Dev

EXCEL VBA代码未将范围复制到另一张工作表

来自分类Dev

如果值匹配,如何复制并粘贴到另一个工作表-Excel VBA

来自分类Dev

将数据行复制到Excel中的另一个工作表并添加列VBA

来自分类Dev

将多个 Excel 文件合并到一张 Excel 工作表中,无需复制公式和重复数据

来自分类Dev

C#-Microsoft.Office.Interop.Excel将Excel中的所有行复制到另一张表

来自分类Dev

excel根据单元格值将行复制到另一张表

来自分类Dev

Excel VBA:如何将数据推到另一张工作表上的独占范围?

来自分类Dev

如何将数据从一张excel表复制到另一张excel表?

来自分类Dev

Excel:将 VBA 操作从同一张工作表更改为另一张工作表

来自分类Dev

Excel公式-如何有条件地用另一张表中的值填充列

来自分类Dev

Excel VBA:如何将数据推送到另一张工作表上的独占范围?

来自分类Dev

Excel VBA计算过滤的单元格并复制到另一张表

来自分类Dev

Excel VBA:如果列中的值匹配,则将值从工作表1插入到工作表2

来自分类Dev

Excel VBA:如果列中的值匹配,则将值从工作表1插入到工作表2

来自分类Dev

[Excel] [VBA]在另一张纸上查找值并将其复制为BG

来自分类Dev

如果单元格包含特定文本,请在excel 2013中将整行和接下来的两行复制到下一张工作表

来自分类Dev

如果匹配,Excel VBA 在另一列中查找值

来自分类Dev

如何根据Excel中的标题将一列从一张纸复制到另一张纸?

Related 相关文章

  1. 1

    Excel Vba - 如何将匹配的行从一张工作表复制并粘贴到另一张工作表中完全匹配的行下方

  2. 2

    VBA Excel将行从一张工作表复制到另一张工作表中具有特定值的行

  3. 3

    将 Excel 中匹配记录的行值从一张工作表复制到另一张工作表

  4. 4

    如果它们在列标题上匹配,则将值从Excel中的一张表映射/复制到另一张

  5. 5

    Excel,如果行值与另一张工作表上的 vlookup 值匹配,则求和

  6. 6

    复制另一张Excel工作簿中的数据-复制一张纸而不是一张纸

  7. 7

    无法将列中的所有数据复制到另一张表-Excel VBA

  8. 8

    将大量行从一张工作表复制到另一张工作表,但Excel 2010中的空白行除外

  9. 9

    excel vba-如果满足条件,则将具有各种形状的特定行复制/粘贴到另一张工作表

  10. 10

    使用Excel中的按钮将信息从一张工作表复制到新行的另一工作表

  11. 11

    从 Excel 文件中所有工作表的列中复制数据并将其粘贴到一张工作表中

  12. 12

    EXCEL VBA代码未将范围复制到另一张工作表

  13. 13

    如果值匹配,如何复制并粘贴到另一个工作表-Excel VBA

  14. 14

    将数据行复制到Excel中的另一个工作表并添加列VBA

  15. 15

    将多个 Excel 文件合并到一张 Excel 工作表中,无需复制公式和重复数据

  16. 16

    C#-Microsoft.Office.Interop.Excel将Excel中的所有行复制到另一张表

  17. 17

    excel根据单元格值将行复制到另一张表

  18. 18

    Excel VBA:如何将数据推到另一张工作表上的独占范围?

  19. 19

    如何将数据从一张excel表复制到另一张excel表?

  20. 20

    Excel:将 VBA 操作从同一张工作表更改为另一张工作表

  21. 21

    Excel公式-如何有条件地用另一张表中的值填充列

  22. 22

    Excel VBA:如何将数据推送到另一张工作表上的独占范围?

  23. 23

    Excel VBA计算过滤的单元格并复制到另一张表

  24. 24

    Excel VBA:如果列中的值匹配,则将值从工作表1插入到工作表2

  25. 25

    Excel VBA:如果列中的值匹配,则将值从工作表1插入到工作表2

  26. 26

    [Excel] [VBA]在另一张纸上查找值并将其复制为BG

  27. 27

    如果单元格包含特定文本,请在excel 2013中将整行和接下来的两行复制到下一张工作表

  28. 28

    如果匹配,Excel VBA 在另一列中查找值

  29. 29

    如何根据Excel中的标题将一列从一张纸复制到另一张纸?

热门标签

归档