Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 基于小写(区分大小写)字母的单元格求和?_Vba_Excel - Fatal编程技术网

Vba 基于小写(区分大小写)字母的单元格求和?

Vba 基于小写(区分大小写)字母的单元格求和?,vba,excel,Vba,Excel,我正在写一个程序,它应该只对行加小写c。我现在的代码对所有以c开头的行求和,不管是大写还是小写。我如何编写它以使其区分大小写? 以下是我到目前为止的情况: Sub summ() Dim iArea As Long With Worksheets("K00304.RPT") With .Range("A14", .Cells(.Rows.Count, 1).End(xlUp)) .Cells(2, 1).Value = "ZERO" .AutoFilter

我正在写一个程序,它应该只对行加小写c。我现在的代码对所有以c开头的行求和,不管是大写还是小写。我如何编写它以使其区分大小写? 以下是我到目前为止的情况:

Sub summ()
Dim iArea As Long

With Worksheets("K00304.RPT")
    With .Range("A14", .Cells(.Rows.Count, 1).End(xlUp))
        .Cells(2, 1).Value = "ZERO"
        .AutoFilter field:=1, Criteria1:="ZERO*"
        With .Resize(.Rows.Count - 
1).Offset(1).SpecialCells(xlCellTypeVisible) '.Offset(-1)
            For iArea = 1 To .Areas.Count - 1
                With .Parent.Range(.Areas(iArea).Offset(1), .Areas(iArea + 
1).Offset(-1))
                    Worksheets("Total").Cells(Rows.Count, 
"AF").End(xlUp).Offset(1).Value = WorksheetFunction.SumIf(.Cells, "c*", 
.Offset(, 7))
                End With
            Next
        End With
        .Cells(2, 1).ClearContents
    End With
    .AutoFilterMode = False
End With

非常感谢

您可以将字符与StrConv()进行比较。:


编辑:事实上,只要检查
如果LEFT(cel,1)=“C”,那么
似乎也能起作用。

我会使用
Evaluate
函数和sumproduct公式,希望这能起作用

Sub summ()
Dim iArea As Long

With Worksheets("K00304.RPT")
    With .Range("A14", .Cells(.Rows.Count, 1).End(xlUp))
        .Cells(2, 1).Value = "ZERO"
        .AutoFilter field:=1, Criteria1:="ZERO*"
        With .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible) '.Offset(-1)
            For iArea = 1 To .Areas.Count - 1
                With .Parent.Range(.Areas(iArea).Offset(1), .Areas(iArea + 1).Offset(-1))

                    Dim criteria_range As String
                    Dim sum_range As String
                    Dim criteria As String
                    Dim sum_ifs_case_sensitive As Long

                    criteria = "c"
                    criteria_range = .Cells.Address
                    sum_range = .Offset(, 7).Address
                    sum_ifs_case_sensitive = Evaluate("SUMPRODUCT(--(ISNUMBER(FIND(" & Chr(34) & criteria & Chr(34) & "," & criteria_range & ")))," & sum_range & ")")

                    Worksheets("Total").Cells(Rows.Count, "AF").End(xlUp).Offset(1).Value = sum_ifs_case_sensitive

                End With
            Next
        End With
        .Cells(2, 1).ClearContents
    End With
    .AutoFilterMode = False
End With

End Sub

谢谢你,布鲁斯韦恩!有没有一种简单的方法可以将其应用到我的代码中?不完全是,它现在没有求和-我感觉在With.Parent.Range行之后有太多的代码。我将Dim移到了顶部,但是sum_ifs_区分大小写和sum_范围线似乎没有任何作用。
Sub summ()
Dim iArea As Long

With Worksheets("K00304.RPT")
    With .Range("A14", .Cells(.Rows.Count, 1).End(xlUp))
        .Cells(2, 1).Value = "ZERO"
        .AutoFilter field:=1, Criteria1:="ZERO*"
        With .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible) '.Offset(-1)
            For iArea = 1 To .Areas.Count - 1
                With .Parent.Range(.Areas(iArea).Offset(1), .Areas(iArea + 1).Offset(-1))

                    Dim criteria_range As String
                    Dim sum_range As String
                    Dim criteria As String
                    Dim sum_ifs_case_sensitive As Long

                    criteria = "c"
                    criteria_range = .Cells.Address
                    sum_range = .Offset(, 7).Address
                    sum_ifs_case_sensitive = Evaluate("SUMPRODUCT(--(ISNUMBER(FIND(" & Chr(34) & criteria & Chr(34) & "," & criteria_range & ")))," & sum_range & ")")

                    Worksheets("Total").Cells(Rows.Count, "AF").End(xlUp).Offset(1).Value = sum_ifs_case_sensitive

                End With
            Next
        End With
        .Cells(2, 1).ClearContents
    End With
    .AutoFilterMode = False
End With

End Sub