【问题标题】:Find a several matches and export information from column B to same column in matching worksheet查找多个匹配项并将 B 列中的信息导出到匹配工作表中的同一列
【发布时间】:2022-01-21 22:05:21
【问题描述】:

我会尽量用最好的方式解释这一点:

我有一个名为“设备清单”的 ws,它是库存概览。我还有几个称为“请求列表 1”、“请求列表 2”等的 ws。 “设备清单”包含每个项目的序列号,但“请求清单”包含除序列之外的所有信息。

我有一个调用可用工作表(“请求列表”)的用户窗体,然后我可以选择合适的。

我还设法在 A 列“设备列表”中创建了一个 DoubleClick“检查”功能,基于此信息我想:

  1. 当按下“导出”按钮时,我希望它将“设备列表”中的 C、D、E 和 F 列中的信息与我选择的“请求列表”中的相同列进行比较。 (ListBox1.Value)

  2. 然后根据 A 列中的“检查”,从“设备列表”中复制唯一的“序列”(B 列),并将其粘贴到“请求列表”中找到的匹配行和列中。

  3. 然后将“请求列表”(H1)中的“位置”带到“设备列表”中的位置列 我已经开始研究宏,但无法提出任何有用的东西。

请了解我在 VBA 方面的技能有限,但我有兴趣了解更多信息,如果有人可以帮助我,我将不胜感激。

我已经成功了,所以它会根据 col A 中的信息复制行这是我目前所拥有的:

Private Sub cbnExport_Click()

    For Each Cell In Sheets("Equipment List").Range("A4:A9999")
        If Cell.Value = ChrW(&H2713) Then
            matchRow = Cell.Row
            Rows(matchRow & ":" & matchRow).Select
            Selection.Copy
        
            Sheets(ListBox1.Value).Select
        
            Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial 
    Paste:=xlPasteValues
                
            Sheets("Equipment List").Select
    
        End If
    Next

     Worksheets("Equipment List").Columns("A").ClearContents


    Sheets(ListBox1.Value).Select

    Application.ScreenUpdating = True

    Unload Me

End Sub

The process and what i am hoping to achieve

【问题讨论】:

  • 你能解释一下你的代码有什么问题吗?您是否需要使用 4 列而不是 1 列中的条件来查找值?
  • 我的代码有效,但我想修改它以查找匹配项并将序列号从设备列表填充到请求列表。它需要匹配所有列(C、D、E、F)以确保其相同。如果它只与其中一个匹配,它很可能会用错误的序列号填充行。
  • 请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: excel vba match copy-paste


【解决方案1】:

您的代码当前正在查看每一行并检查其中的一列。

For Each Cell In Sheets("Equipment List").Range("A4:A9999")
    If Cell.Value = ChrW(&H2713) Then     'checks value in column A only
        matchRow = Cell.Row
        ' do the rest    
    End If
Next

有很多方法可以检查其他列。这是一种方法:

For Each Cell In Sheets("Equipment List").Range("A4:A9999")
    
    Dim ColA As String   ' place holders for Column A,B,C and D
    Dim ColB As String
    Dim ColC As String
    Dim ColD As String


   ' now, just fill in the values from current cell and the neighbors of it

   ColA = Cell.Value
   ColB = Cell.Offset(0, 1).Value  'one cell to the right of column A is B
   ColC = Cell.Offset(0, 2).Value  'two cells to the right of A is C
   ColD = Cell.Offset(0, 3).Value  'three cells to the right of A is D

    If ColA = ChrW(&H2713) And ColB = "Criteria 9" And ColC = "22 1/2" And ColD = "22 1/2"  Then
        'we have matched all four columns
        matchRow = Cell.Row

        ' do other work here
        
    End If
Next

我在If-Then 块中硬编码了ColBColCColD 的值。您将需要替换它们以与您匹配它们的对象进行动态比较。

【讨论】:

  • 感谢您的付出,但恐怕我的知识还不足以根据您的帮助完成代码。如果您能再试一次,我将不胜感激。谢谢
猜你喜欢
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多