将行号和值与另一个工作表上的行匹配

时间:2017-07-07 19:26:08

标签: excel excel-vba excel-formula vba

正如标题所示,我正在尝试创建一个系统,其中一个单元格(与特定行匹配)将搜索另一个工作表,找到与其行号匹配的数字,然后输入配对值。我附上了截图,以获得更清晰的图片。

这是我迄今为止所尝试过的,没有任何成功。

IF(INDEX(A2:B8,2,2)=?,____,"")

我独立理解INDEX和MATCH函数,但没有具体理解如何将这两个函数合并到这个问题中。此外,我已经尝试搜索谷歌寻求帮助,但是甚至不知道输入什么作为搜索条件,所以对此的帮助对于未来的问题也会很好。

enter image description here

提前致谢!

2 个答案:

答案 0 :(得分:1)

在A2中使用以下内容:

=IFERROR(INDEX(Sheet1!$B$2:$B$8,SMALL(IF(Sheet1!$A$2:$B$8=ROW(),ROW(Sheet1!$A$2:$A$8),999999),COLUMN(A1))-1),"")

数组公式同时按 Ctrl + Shift + 输入而不是 Enter
将公式拖放到同一行并向下。

Sheet1!$ A $ 2:$ A $ 8,Sheet1!$ B $ 2:$ B $ 8是行和值栏
If()将测试A2中的每个值:A8中新表中的Row()并返回sheet1中的行号 99999如果没有Row()匹配则具有最大值(If的假部分)
列(A1)返回小(,1)
当您拖动同一行时(对于相同行号的多个值),它将成为列(B1) 如果没有数字

,Iferror将返回“”为空

Sheet 1中

    A    B
    Row Value
    5   20
    2   30
    7   40
    8   50
    2   60
    3   70
    2   100

Sheet2结果

Row/Col   A     B    C 
 1    
 2        30    60  100
 3        70        
 4          
 5        20        
 6          
 7        40        
 8        50        

答案 1 :(得分:0)

使用VBA即可实现此目的。只需将此代码粘贴到新模块中即可运行。

Sub PasteToNewSheet()
Dim wsSource As Worksheet: Set wsSource = Worksheets(1)
Dim lastrow As Long: lastrow = wsSource.Cells(Rows.Count, 1).End(xlUp).Row
Dim wsDest As Worksheet: Set wsDest = Worksheets.Add(After:=wsSource)
Dim rngRows As Range: Set rngRows = wsSource.Range("A2:A" & lastrow)
Dim rng As Range
wsDest.Range("A1").Value = "Value"

For Each rng In rngRows
    If rng = "" then
        rng = rng
    ElseIf wsDest.Cells(rng.Value, 1) = "" Then
        wsDest.Cells(rng.Value, 1) = rng.Offset(, 1).Value
    ElseIf wsDest.Cells(rng.Value, 2) = "" Then
        wsDest.Cells(rng.Value, 2) = rng.Offset(, 1).Value
    ElseIf wsDest.Cells(rng.Value, 3) = "" Then
        wsDest.Cells(rng.Value, 3) = rng.Offset(, 1).Value
    End If
Next rng

End Sub