显示与多个语句匹配的值

时间:2016-11-10 10:51:26

标签: excel excel-vba vba

我不知道如何继续解决这个问题。

我的Excel表格看起来像附加的图像。我想要做的是在另一张表中列出附有评论的所有评论。

我想要做的是在工作表(报告)中,我想显示一个列表,其中包含在第42周与团队A相关的所有好/坏分数,其中已做出评论。 因此,在此示例中,列表将与第2行和第4行合并。

enter image description here

源列表包含超过100k行,因此我的第一次尝试是使用offset限制公式,以仅查看指定周中的行。但也许vba代码是一种更快捷的方法吗?

2 个答案:

答案 0 :(得分:0)

试试这段代码:

Sub Test()
Dim row As Integer, lastrow As Long, rng As Range

'This filters the data and copies the result to a second worksheet - Sheet2 (rename to suit)

With Sheet1

    On Error Resume Next
        .ShowAllData
    On Error GoTo 0

    lastrow = .Cells(Rows.Count, 1).End(xlUp).row

    .Range("A1:D" & lastrow).AutoFilter field:=1, Criteria1:="a"
    .Range("A1:D" & lastrow).AutoFilter field:=2, Criteria1:="42"
    .Range("A1:D" & lastrow).AutoFilter field:=4, Criteria1:="<>"

        Set rng = .Range("A1:D" & .Cells(Rows.Count, 1).End(xlUp).row).SpecialCells(xlCellTypeVisible)

         If rng.Cells(Rows.Count, 1).End(xlUp).row > 1 Then ' If Not just header row visible  i.e your filter has some actual results

            Set rng = .Range("A2:D" & lastrow).SpecialCells(xlCellTypeVisible) 'A2 to exclude header
            rng.Copy Destination:=Sheet2.Range("A" & Sheet2.Cells(Rows.Count, 1).End(xlUp).row + 1) 'Copy to next available row in sheet 2

         End If

End With

End Sub

答案 1 :(得分:0)

我终于找到了能够做我想做的功能。

此代码显示第7列中的数据。通过更改公式末尾的7,我可以选择显示我想要的列,然后只需将公式一直复制到我需要的位置。

如果有人使用此代码,请不要忘记它是一个数组,在将其放入Excel而不是按Enter后,您必须按ctrl + shift + enter。

`=IFERROR(INDEX('Raw ticket'!$1:$1048576;
SMALL(
IF((44='Raw ticket'!M:M)*(1='Raw ticket'!H:H)*("a"='Raw ticket'!C:C)*(ISTEXT('Raw ticket'!G:G)); ROW('Raw ticket'!A:A)-ROW('Raw ticket'!$A$2)+2); ROW(1:1));7);"")`