汇总不包括特定范围帐户的帐户余额列表

我将如何汇总大量GL帐户(4000行,大约100个独特帐户),同时排除特定范围的帐户(大约40个独特帐户)。

我希望能够做到这一点,而无需手动为每个帐户写出“<> XXX”40次。 理想情况下,我有一个我不想包含在被引用的总和帐户表。

我想在H栏中填入的值的屏幕截图,基于列F中的帐户,同时排除列K中的帐户。

在这里输入图像说明

在这里输入图像说明

使用此公式作为数组公式。 input公式后,按CTRL + SHIFT + ENTER

=SUM(IF(A2:A25=H13,IF(ISERROR(MATCH(B2:B25,F2:F5,0)),C2:C25,0),0)) Column A - Your profit centers Column B - Your accounts Column C - Amounts to sum Column F - Accounts you want to exclude Cell H13 - Profit center that you want to sum up 

注意:每次编辑公式后按CTRL + SHIFT + ENTER

您可以使用数组,A:B中的数据和e1:e3中的排除项

=SUM((ISERROR(MATCH($A$1:$A$4000,$E$1:$E$3,0)))*($B$1:$B$4000))

这将给你总和 – 排除,这将是J栏中的某些帐户

=SUM(($A$1:$A$4000=$J4)*(ISERROR(MATCH($A$1:$A$4000,$E$1:$E$3,0)))*($B$1:$B$4000))

首先在J2中写入:

 =iferror(vlookup(F2,K:K,1,false),1) 

然后复制这个公式直到表的结尾。

然后在你想要的单元格中,放置下面的内容

 =sumif(J:J,"1",H:H) 

希望对你有帮助

考虑使用Jet / ACE SQL引擎(Windows .dll文件)在Excel中运行的聚合SQL查询,假设您使用Excel for PC。 使用SQL,您可以按照Account numberProfit Center分组。 没有数组或循环需要。

为了您的需要,您可以select工作表内的区域作为表格使用。 确保相应地在SQL语句中添加列标题和引用。 主列是主表,不包括作为子查询表。 在名为DATA的工作表中设置查询数据,并在名为EMPTY的空工作表中输出结果。

SQL (在VBA中以stringformsembedded)

 SELECT d.[Profit Center], Sum(d.Amount) As [Sum Amount] FROM [DATA$A:D] d WHERE NOT EXISTS (SELECT 1 FROM [DATA$I:J] sub WHERE sub.[DNI_Account number] = d.[Account number]) GROUP BY d.[Profit Center] 

VBA

 Public Sub RunSQL() Dim conn As Object, rst As Object, fld As Object Dim strConnection As String, strSQL As String Dim i As Integer: i = 0 Set conn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset") strConnection = "DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" _ & "DBQ=C:\Path\To\Workbook.xlsm;" strSQL = " SELECT d.[Profit Center], Sum(d.Amount) As [Sum Amount]" _ & " FROM [DATA$A:D] d " _ & " WHERE NOT EXISTS (SELECT 1 FROM [DATA$G:H] sub" _ & " WHERE sub.[Account number] = d.[Account number])" _ & " GROUP BY d.[Profit Center]" ' OPEN DB CONNECTION AND RECORDSET conn.Open strConnection rst.Open strSQL, conn Worksheets("RESULTS").Activate Worksheets("RESULTS").Range("A1").Activate ' COLUMN HEADERS For Each fld In rst.Fields ActiveCell.Offset(0, i) = fld.Name i = i + 1 Next fld ' DATA ROWS Worksheets("RESULTS").Range("A2").CopyFromRecordset rst rst.Close conn.Close End Sub