Vba Excel以匹配两个工作表中的值

Vba Excel以匹配两个工作表中的值,vba,excel,excel-formula,excel-2010,Vba,Excel,Excel Formula,Excel 2010,我需要一个宏/公式来比较工作表中的两个单元格范围,并在单元格中返回相应的值 eg表: 在工作表1(表1)中 第2张: dates 1st 2nd 3rd 4th 5th 6th 0 1 1 2 2 3 3 1 2 3 5 6 7 8 3 4 6 7 8 9 7 5 6 7 8 9 10 11 7 8 9 10 11 12 13 10

我需要一个宏/公式来比较工作表中的两个单元格范围,并在单元格中返回相应的值

eg表: 在工作表1(表1)中

第2张:

dates   1st 2nd 3rd 4th 5th 6th

0         1  1  2   2   3   3
1         2  3  5   6   7   8   
3         4  6  7   8   9   7 
5         6  7  8   9   10  11
7         8  9  10  11  12  13
10       11 12  13  15  16  18
12       13 15  16  18  19  21
15       16 30  31  45  46  60
30       31 33  34  37  38  40

根据以上示例,如果我的范围需要我的期望值(例如,在sheet1 Age:1和description:8中,则应将其与sheet2进行比较,并将值粘贴到sheet1校对栏中的第6位)。像这样,我需要填写所有字段

据我所知,您的问题是

  • 首先将sheets1.age与sheets2.dates匹配,如果找到匹配项,则
  • 您正在搜索sheets2.1至sheets2.6中的Sheets1.description,如果找到mtach,则
  • 您正在从sheet2中选择*th(列名)并将其放入Sheet1.proof中
  • 我只发现1个匹配项,即第一次观察

    下面是代码

    Sub checkNmatch()
    
    计算用于自动化的最后一行图纸1和图纸2

    lastRowSheet1 = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    lastRowSheet2 = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To (lastRowSheet1 - 1)
     For j = 2 To (lastRowSheet2 - 1)
    
    在下面检查sheets1.age是否与sheets2.dates匹配

       If Worksheets("Sheet1").Cells(i, 1) = Worksheets("Sheet2").Cells(j, 1) Then
    
    如果找到匹配项,则搜索表2.1至表2.6中的表1.description

       For k = 2 To 7
       If Worksheets("Sheet1").Cells(i, 2) = Worksheets("Sheet2").Cells(j, k) Then
    
    如果找到匹配项,则将表2的列名复制到表1的校样中

          Worksheets("Sheet1").Cells(i, 3) = Worksheets("Sheet2").Cells(1, k)       
       End If
              Next
            End If
         Next
        Next
        End Sub
    

    你的数据无法读取。你能解释一下我们在看什么吗?列标题是什么?在第一组中,第一列(2、3、4…)是行号还是值?第二栏(9.2.9…)是描述吗?我不知道第二组数字,因为它们肯定超过了6列标题?嗨,wayne G.Dunn,我正在寻找一个宏/公式,需要与表1中的数据相匹配看起来像此年龄描述1 3 2 9 3 4 9 5 6 7 0 8 1 9 2 10 11然后我需要比较值如果表2中存在1和3,则应返回表2中存在的值2日期1 2 2 3 4 0 1 2 1 2 3 3 5 7 4 6 7 8 97 8 9 10 11这里它应该返回值,因为3rdI修复了您的格式,所以我们至少可以看到列和行。现在你需要给出一个非常具体的例子。你说如果“年龄:1和描述:8”,我相信这是“在ColA中查找年龄=1的行,然后使用ColB中找到的值(即8)。我不知道你接下来搜索哪一行或哪一列,或者你要查找什么。你说“将其与sheet2进行比较”,但你没有说你是在日期列中比较年龄(1),还是在描述(8)中比较。请写出您试图实现的逻辑。我需要比较sheet2中sheet2的值,它从日期中取1,然后在行中搜索值8,然后返回值6。这是正确的:取年龄列(1)中的第一个值,并在sheet2中找到带(1)的行在日期列中。然后查看表2中的那一行,看看是否找到值(8)[是的,它在列“6”中];因此在表1中的列证明中,输入“6”??如果没有,我放弃。然后,其他组合都不会匹配(表2中没有年龄为2、4、6、8或9的行)而且在描述上没有其他年龄段的匹配。嗨,尼奥,如果我在第一、第二、第三、第四个位置有字母,比如苹果、香蕉、杰克水果、李子,你的代码工作得很好。如何在那个位置粘贴字母我的老兄,我是macro的新手,你能建议我用代码来代替数字第一、第二、第三个字母吗L已使用此工作表(“表1”)更新代码。单元格(i,3)=工作表(“表2”)。单元格(1,k)现在,它自动选择列名称,放置苹果、香蕉、第一、第六或任何你想要的东西。neo,你的旧代码运行良好。但更新后的代码不起作用,尚未选择表1中的任何值。请执行以下操作:needful@NEO_mental代码工作得很好。问题是你需要非常清楚你想要什么——并且能够与向试图提供帮助的人提供帮助。给出非常精确的方向;引用行和列的位置及其值。您提供的示例数据将仅在一行匹配!!(并且无论您的Sheet2列标题是1、2、3还是X、Y、Z或Apple、Banana……)
          Worksheets("Sheet1").Cells(i, 3) = Worksheets("Sheet2").Cells(1, k)       
       End If
              Next
            End If
         Next
        Next
        End Sub