VBA-在Row中查找Word并输出下一列

时间:2017-02-01 08:35:58

标签: vba excel-vba excel

Amt1 Tax1 Amt2 Tax2 Amt3 Tax3 Amt4 Tax4 Amt5 Tax5 Amt6 Tax6
YQ   25    YR   22   QW   25   TR   58   WR   105  AY   125
YR   102   YQ   25   AY   15   YR   152  WR    55  WQ   120

在Excel中,现在我希望列中的输出总共为YR,如果YR连续5次输出,则输出应该总计为5。

任何人都可以帮我这个吗?

3 个答案:

答案 0 :(得分:1)

使用SUMIFS的基于公式的解决方案

=SUMIFS(B2:L2,A2:K2,"YR")

注意范围内的偏移:Sum Range偏离Criteria Range <右侧1列

答案 1 :(得分:0)

您可以使用以下UDF:

Option Explicit

Function mySumIfs(lRow As Long, Str As String) As Long

Dim LastCol As Long
Dim C As Range

LastCol = Cells(lRow, Columns.Count).End(xlToLeft).Column ' get last column in current row

' loop through all cells in the Range of the Row selected
For Each C In Range(Cells(lRow, 1), Cells(lRow, LastCol))
    If C.Value Like Str Then
        mySumIfs = mySumIfs + C.Offset(, 1).Value
    End If
Next C

End Function

然后,在Excel工作表的单元格中,您只需键入公式: =mySumIfs(3,"YR")

  • 3 - 表示行号
  • “YR” - 正在搜索的字符串

您也可以在VBA中使用它,只需使用:

Dim SumTest As Long
SumTest = mySumIfs(3, "YR")

在Excel表格中如何实现它的屏幕截图:

enter image description here

答案 2 :(得分:0)

欢迎使用StackOverflow。这不是一个代码换我的网站,当你提出这样的问题时,你应该展示一些解决它们的努力。 话虽如此,这是一种用自定义公式解决问题的方法:

Option Explicit

Public Function OutputMe(rngSelectRange As Range, strOutput As String) As Double

    Dim rngCell As Range

    For Each rngCell In rngSelectRange
        If rngCell = strOutput Then
            OutputMe = OutputMe + rngCell.Offset(0, 1).Value
        End If
    Next rngCell

End Function

enter image description here