Vba 基于小写(区分大小写)字母的单元格求和?
我正在写一个程序,它应该只对行加小写c。我现在的代码对所有以c开头的行求和,不管是大写还是小写。我如何编写它以使其区分大小写? 以下是我到目前为止的情况: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
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