首页 > 解决方案 > 工作表函数 Sum-if 导致错误类型不匹配

问题描述

我正在遍历工作表以汇总“C”和“D”的数量。

每个标签在 M 列中都有金额,在 N 列中它们是贷方还是借方,用字母 C 或 D 表示。

首先,我将字母 C 和 D 放在空白单元格上,并尝试将这两个数量放在它们旁边。

我在 sumif 行收到类型不匹配错误,并且整行都突出显示。

起初我以为可能是 ws = Worksheets(I) 导致了问题,所以我用 Worksheets(I) 换掉了它们,但它仍然不起作用。

Sub Sumiftabs()

Dim Filepath As String    
Dim UIGFile As Workbook    
Dim Column As String    
Dim Month As String    
Dim Year As Integer    
Dim I As Long    
Dim TY As Integer    
Dim TYLetter As String    
Dim T As Long
Dim TreatyYear As Long    
Dim WS_Count As Integer    
Dim ws As Worksheet


Application.ScreenUpdating = False

TreatyYear = Sheets("Control").Range("B7").Value

'On Error Resume Next

For T = TreatyYear To 16 Step -1    
TYLetter = WorksheetFunction.VLookup(T, Workbooks("Separate tabs.xlsm").Sheets("Control").Range("H:I"), 2, False)    
TY = Sheets("Control").Range("B7").Value    
Month = Sheets("Control").Range("B5").Value    
Year = Sheets("Control").Range("B4").Value    
Filepath = Sheets("Control").Range("B2").Value    

Set UIGFile = Workbooks.Open("K:\Ayoon\UIG\" & Year & "\" & Month & "\UIG_NSA_MonYear_TY" & T & ".xls")

WS_Count = UIGFile.Worksheets.Count

For I = WS_Count To 1 Step -1

Set ws = Worksheets(I)

'Direct Premium
UIGFile.Worksheets(I).Range("S4").Value = "C"    
UIGFile.Worksheets(I).Range("S5").Value = "D"    
UIGFile.Worksheets(I).Range("T4").Value = _
   Application.WorksheetFunction.SumIf(ws.Range("N:N"), ws.Range("S:S"), ws.Range("M:M"))

UIGFile.Worksheets(I).Range("T5").Value = _
   Application.WorksheetFunction.SumIf(ws.Range("N:N"), ws.Range("S:S"), ws.Range("M:M"))

Next I

UIGFile.Close savechanges:=True


Next T

Application.ScreenUpdating = True

End Sub

标签: excelvba

解决方案


您的 SUMIF 看起来不正确。

例如试试这个:

UIGFile.Worksheets(I).Range("T4").Value = _
    Application.WorksheetFunction.SumIf(ws.Range("N:N"), "C", ws.Range("M:M"))

推荐阅读