VBA-基于多个条件的计数值

VBA-基于多个条件的计数值,vba,excel,Vba,Excel,嗨,我是新来的,所以我还有很多东西要学。此外,我不是以英语为母语的人,所以我很难解释事情。无论如何,我会尽力的 我对基于多个标准的计算值有意见。例如,我有两个标准,即“A”和“B”。但是,我只获取每行中的最后一个值。我已经使用了COUNTIFS,但仍然不起作用 请看下面的内容,以便更好地了解我在做什么 Criteria | C | D | E | Criteria | C | D | E | A | x | | x |

嗨,我是新来的,所以我还有很多东西要学。此外,我不是以英语为母语的人,所以我很难解释事情。无论如何,我会尽力的

我对基于多个标准的计算值有意见。例如,我有两个标准,即“A”和“B”。但是,我只获取每行中的最后一个值。我已经使用了COUNTIFS,但仍然不起作用

请看下面的内容,以便更好地了解我在做什么

Criteria |  C  |  D  |  E  |         Criteria |  C  |  D  |  E  |
   A     |  x  |     |  x  |             A    |  1  |     |  1  |
   B     |     |     |  x  |  -->        B    |     |     |  1  |
   A     |  x  |     |     |
这是我目前掌握的代码

Sub Run_Report()

Dim sht As Worksheet
Set sht = ActiveSheet

Dim wb As Workbook
Set wb = ThisWorkbook

Dim EndRow As Long
EndRow = wb.Sheets("MDR").Cells(Cells.Rows.Count, "C").End(xlUp).row

wb.Sheets("Report").Range("E9:N17").ClearContents

Dim LastCol As Long

For i = 9 To EndRow
    LastCol = wb.Sheets("MDR").Cells(i, Columns.Count).End(xlToLeft).column
    If LastCol > 5 And LastCol < 15 And wb.Sheets("MDR").Cells(i, LastCol).Font.ColorIndex = 3 Then
         sht.Cells(9, wb.Sheets("MDR").Cells(i, LastCol).column).Value = Application.WorksheetFunction.CountIfs(wb.Sheets("MDR").Range("D9:D" & EndRow), "General", _
         wb.Sheets("MDR").Range("A9:N" & EndRow).Columns(wb.Sheets("MDR").Cells(i, LastCol).column), "<>" & "")
    End If
Next

End Sub
子运行报告()
将sht变暗为工作表
设置sht=ActiveSheet
将wb设置为工作簿
设置wb=ThisWorkbook
暗尾行与长尾行相同
EndRow=wb.Sheets(“MDR”).单元格(Cells.Rows.Count,“C”).结束(xlUp).行
wb.表格(“报告”).范围(“E9:N17”).清晰内容
暗淡如长
对于i=9到尾行
LastCol=wb.Sheets(“MDR”).单元格(i,Columns.Count).结束(xlToLeft).列
如果LastCol>5且LastCol<15且wb.Sheets(“MDR”).单元格(i,LastCol).Font.ColorIndex=3,则
短单元格(9,wb.Sheets(“MDR”).Cells(i,LastCol).column).Value=Application.WorksheetFunction.CountIfs(wb.Sheets(“MDR”).Range(“D9:D”和EndRow)、“General”_
wb.Sheets(“MDR”).Range(“A9:N”和EndRow).列(wb.Sheets(“MDR”).单元格(i,LastCol).列),“”和“”)
如果结束
下一个
端接头
任何帮助都将不胜感激


谢谢

您提供的示例数据是您得到的还是您想要的?(如果这是您想要的,听起来您不想计算任何东西-您只想看看是否在任何地方满足条件。[我想可以通过测试计数是否大于0来实现,因此计数可能是合适的。])FWIW-代码中有
wb.Sheets(“MDR”).Cells(I,LastCol).column
的任何地方,您可以将其替换为
LastCol
。这两个术语是相同的。左边的数据是我得到的,右边的是我想要的输出。例如在A行中,我在C&E中有两个值,但我只需要得到最后一个值,所以我将取E列中的值,并且该值为1。此外,在第三行中,它也有相同的条件,即A,但在C列中只有一个值,因此计数为1。与B行相同。您提供的示例数据是您得到的还是您想要的?(如果这是您想要的,听起来您不想计算任何东西-您只想看看是否在任何地方满足条件。[我想可以通过测试计数是否大于0来实现,因此计数可能是合适的。])FWIW-代码中有
wb.Sheets(“MDR”).Cells(I,LastCol).column
的任何地方,您可以将其替换为
LastCol
。这两个术语是相同的。左边的数据是我得到的,右边的是我想要的输出。例如在A行中,我在C&E中有两个值,但我只需要得到最后一个值,所以我将取E列中的值,并且该值为1。此外,在第三行中,它也有相同的条件,即A,但在C列中只有一个值,因此计数为1。与B行相同。