如何在Excel中仅显示符合特定条件的数据

如何在Excel中仅显示符合特定条件的数据

为了便于论证,我有一个姓名列表,其中有一列包含数字数据,如下所示:

Dave    1
Bob     2
Frank   1
Dennis  3

我希望在另一张表上有另一个表格,该表格根据姓名旁边的数字选择并显示姓名。

例如,该列1将列出 Dave 和 Frank 的名字

这可能吗?

答案1

您可以使用数组公式执行此操作。执行以下操作:

  1. 在新工作表上设置表格。创建列标题1、、23
  2. 在标题1(在A2)下,输入以下内容。

    =IFERROR(INDEX(Sheet1!$A$1:$A$5,SMALL(IF(Sheet1!$B$1:$B$5=Sheet2!A$1,ROW(Sheet1!$B$1:$B$5)),ROWS(B$2:B2))),"")

    其中Sheet1是包含原始数据的工作表,A1:A5是原始数据中的名称列表(包括列标题),B1:B5是原始数据中的数字列表(包括列标题)。

  3. 输入公式后,将光标放在公式栏中,然后按Ctrl+ Shift+ Enter。这会将公式作为数组公式输入。该公式将显示在公式栏中,并被花括号包围。

  4. 现在将此公式填入新表的所有列。然后向下填充公式,直到显示所有名称为止。

公式解释:

公式部分SMALL(IF(Sheet1!$B$1:$B$5=Sheet2!A$1,ROW(Sheet1!$B$1:$B$5)),ROWS(B$2:B2))会查看原始数据,查找与列标题指定的数字相匹配的记录。如果找到匹配项,则返回每个匹配项的行号,并向下填充。

INDEX(Sheet1!$A$1:$A$5, ...)公式部分根据找到的行号返回名称。

IFERROR(..., "")部分检查返回的内容INDEX以查找错误。如果发现错误,则公式不返回任何内容。

答案2

以下是使用 VBA 的解决方案:

Public Sub columns()
    Dim wks, wks1 As Worksheet
    Set wks = ThisWorkbook.Sheets(1)
    Set wks1 = ThisWorkbook.Sheets(2)
    firstrowsource = 1
    wks1.Application.ScreenUpdating = False
    wks1.Cells.Clear
    Last = wks.Cells(Rows.Count, "A").End(xlUp).Row
    For i = firstrowsource To Last
        Name = wks.Cells(i, 1)
        Position = wks.Cells(i, 2)
        j = 1
        looking = True
            While looking
                If wks1.Cells(j, Position) = "" Then
                    If j <> 1 Then
                        wks1.Cells(j, Position) = Name
                    Else
                        wks1.Cells(j, Position) = Position
                        wks1.Cells(j + 1, Position) = Name
                    End If
                    looking = False
                Else
                    j = j + 1
                End If
            Wend
    Next i
    wks1.Application.ScreenUpdating = True
    Final = MsgBox("Finished", vbInformation)
End Sub

您必须转到 Macros / Visual Basic,在 ThisWorkbbok 下插入一个新模块,然后将代码粘贴到右侧。

假设源工作表为 Sheet1,目标工作表为 Sheet2。如果源工作表有标题,则修改变量的值firstrowsource

相关内容