2016-11-10 63 views
0

我被困在如何推进这个问题。显示匹配多个语句的值

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

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

enter image description here

信号源列表包含超过10万行的concisting所以我第一次尝试是限制公式与偏移只在看指定周内的行。但是,也许vba代码是一个更好的方法来做到这一点?

+0

没有*好*的方式来做到这一点。我只想使用过滤器来访问你需要的数据表明 - 否则这是一个相当可观的VBA项目 – CallumDA

+0

为了增加CallumDA33的建议,为什么不将数据转换为表和筛选器将被自动添加,以及格式。 – SJR

回答

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 
+0

谢谢,我应该说我不能在本报告中使用过滤器。原始数据用于多个工作表,因此尝试过滤数据会触发重新计算以杀死计算机。 –

+0

好的,不好使用不同的方法,稍后发布 – Nick

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);"")`