在 Excel 中,如何使表格中一个单元格中包含特定文本的一行数据自动出现在单独工作表的表格中?

在 Excel 中,如何使表格中一个单元格中包含特定文本的一行数据自动出现在单独工作表的表格中?

我每周将包含 8 列数据的报告下载到表格中。数据量每周按行变化(一周可能有 40 行,下一周可能有 100 行,但不超过 150 行)。数据标题保持不变。

我需要能够仅让 B 列中出现“热门:必读”的行中的所有数据自动显示/解析到另一张表上的相同表格中。我是否应该以某种方式将 VLOOKUP 与 =IF 一起使用?

工作表 1 中的表格示例:

在此处输入图片描述

答案1

您可以选择的一种方法是使用 Excel 中的过滤器选项,然后在 B 列上按字母顺序对它们进行排序。如果您确实需要将它们放在单独的工作表中,您可以做的是将它们复制粘贴到下一张工作表中(因为它们将根据排序全部分组在一起)。

或者,您需要编写一个宏,读取每行的 B 列,如果内容是“热门:必播”,则复制该行。

类似这样的内容:

Dim i as Integer
Dim j as Integer

i = 0
j = 0

Do While Cells(i, 2).value != ""
    if Cells(i, 2).Value == "Hot: Must Cover" Then
        Worksheets("Sheet1").Range(Cells(j, 0), Cells(j, 7).Value = Worksheets("Sheet1").Range(Cells(i, 0), Cells(i, 7).Value
        j = j + 1
    End if
    i=i+1
loop

答案2

VLOOKUP我认为使用(或任何其他查找)来实现这一点会很困难。考虑这个 VBA 解决方案:

Sub test    
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim j As Integer

    Set ws1 = Worksheets(1)
    Set ws2 = Worksheets(2)
    j = 1

    For i = 2 To (ws1.Range("A1").ListObject.DataBodyRange.Count + 1)
        If ws1.Range("B" & i).Value = "HOT: Must Cover" Then
            ws1.Range("A" & i & ", G" & i).Copy
            ws2.Range("A" & j).PasteSpecial xlPasteValues
            j = j + 1
        End If
    Next i
End Sub

相关内容