Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 如果行包含某些内容,Excel将动态添加到_Vba_Excel_Sum - Fatal编程技术网

Vba 如果行包含某些内容,Excel将动态添加到

Vba 如果行包含某些内容,Excel将动态添加到,vba,excel,sum,Vba,Excel,Sum,我有一个excel表格,用于输入客户数据,例如零件成本、他们为所有东西支付了多少以及他们如何支付(现金、信用卡或支票)。以下是我的第一页,以便更好地查看: 因此,在第一张工作表上,输入您需要的所有数据,例如姓名、汽车品牌、地址(日期是动态的,=TODAY()。在确认框中键入“y”时,将在表2上计算数据以分析货币值。这是第2页的数据,你可以看到我在说什么: 按下“New Customer”(新客户)按钮运行VBA脚本,该脚本在sheet1上为另一个客户条目创建新行,在sheet2上为sheet

我有一个excel表格,用于输入客户数据,例如零件成本、他们为所有东西支付了多少以及他们如何支付(现金、信用卡或支票)。以下是我的第一页,以便更好地查看:

因此,在第一张工作表上,输入您需要的所有数据,例如姓名、汽车品牌、地址(日期是动态的,=TODAY()。在确认框中键入“y”时,将在表2上计算数据以分析货币值。这是第2页的数据,你可以看到我在说什么:

按下“New Customer”(新客户)按钮运行VBA脚本,该脚本在sheet1上为另一个客户条目创建新行,在sheet2上为sheet1上的新行创建另一个对应行,以生成计算数据,并在sheet3上“存储”上一个客户数据的sheet1和sheet2


这就引出了我的问题。。对于sheet2计算“现金总额”、“信用卡总额”和“支票总额”,如果他们以现金支付,我需要过滤并仅添加(现金+部分成本),(卡+部分成本)如果他们以卡支付,以及(支票+部分成本)如果他们以支票支付。我的问题是,我不知道如何逐行检查他们是否使用现金、信用卡或信用卡支付,然后将该行的部分成本添加到相应的合计框中。我想象一个像=IF(G2>0,G2+E2)这样的语句或类似的语句会起作用,但我无法理解,我希望你们能给出一些解决方案。请注意,这(部分成本+支付媒介)也需要用于动态范围的单元格,因为当天的客户数量未知,这意味着“新客户”可能会输入不同数量的行。

据我所知,您可以尝试类似的方法

=SUMPRODUCT(--(F2:F7 > 0),D2:D7)+SUM(F2:F7)
SUMPRODUCT只将有现金支付的行的部分成本相加。然后将该总额添加到现金列的总额中。您只需将F列更改为每种类型的其他付款方式

真的没有一个好办法让它充满活力。只要设置足够大的范围,你就永远不会超过

F2:F1000
我并没有把这个方程式写在你的工作表上。试试这个,看看现金总额

=SUMPRODUCT(--(G2:G1000 > 0),E2:E1000)+SUM(G2:G1000)

您也没有提到任何关于多种付款类型的内容。我会考虑一下,然后再回复您。

作为bbishopca语句的修正,您可能只需要使用=COUNT(F:F)语句来动态地找出表中存在多少行。所以现在你把

=COUNT(F:F)
在一个单元中,比如A1,它将输出2。然后将bbishopca答案的范围设置为

F2:INDIRECT("F"&A1) 

对每种类型的付款重复上述步骤

如果其他的已经为零(客户只能有一种付款类型),只需将所有4个单元格相加。@Chrismas007第二个客户可以用卡而不是现金付款,所有客户数据都显示/计算在第2页上。因此,这将破坏您的解决方案。那么您需要共享您的代码,以便我们更好地了解数据的转换。@Chrismas007我需要在sheet2上做的就是添加(现金[列G]+部分成本[列E],如果该行的现金>0),卡和支票也是如此。所有这些总额都需要显示在“现金总额”、“卡总额”和“检查总额”中。我基本上需要逐行进行,并将结果添加到总额框中。。听起来像是动态范围的循环,但我不知道怎么做。它不起作用。你的公式中我没有得到的是,我为G>0的每一行将G列添加到E列,我需要“现金总额”作为满足此条件的所有行的运行总数。你的公式使用了F列,这是不对的,而D列,这与我想做的事情无关。此外,我相信如果我有两个客户在sheet2上,一个用现金支付,另一个用信用卡支付,那么你的公式会将客户的“部分成本”添加到总成本中,因为G2:G7的范围将大于0。。如果你知道我想解释什么,我是个白痴,改变了一些字母,效果很好。别理我的无能。我更新了我的方程式以匹配你的表格。我将为多种支付方式制定一个解决方案。在我的帖子中,对于sheet2计算“现金总额”、“信用卡总额”和“支票总额”,我需要过滤并仅添加(现金+部分成本),如果他们以现金支付,(卡+部分成本),如果他们以卡支付,以及(支票+部分成本),如果他们以支票支付。但您的解决方案现在可以通过一些调整工作。