Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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
Excel 查找每个客户的最小发票号,并删除所有不符合';不匹配_Excel_Vba_Function - Fatal编程技术网

Excel 查找每个客户的最小发票号,并删除所有不符合';不匹配

Excel 查找每个客户的最小发票号,并删除所有不符合';不匹配,excel,vba,function,Excel,Vba,Function,我有一个显示在线销售数据的Excel文件。正如您所期望的,有多个列,其中两个是客户ID和发票号 我的目标是只保留发票号为每个客户的第一个(或最小)发票号的行 在重复选项卡上,我们需要相同的内容,但仅针对每个客户的第二个发票号(即第二次购买) 在旁注中,同一客户ID和同一发票号可以有多行,因为这些行位于项目级别,因此可能如下所示: Row 1: Customer ID = 24; Invoice Number = 1014; Item = Jelly Beans Row 2: Customer I

我有一个显示在线销售数据的Excel文件。正如您所期望的,有多个列,其中两个是客户ID和发票号

我的目标是只保留发票号为每个客户的第一个(或最小)发票号的行

在重复选项卡上,我们需要相同的内容,但仅针对每个客户的第二个发票号(即第二次购买)

在旁注中,同一客户ID和同一发票号可以有多行,因为这些行位于项目级别,因此可能如下所示:

Row 1: Customer ID = 24; Invoice Number = 1014; Item = Jelly Beans
Row 2: Customer ID = 24; Invoice Number = 1014; Item = Candy Bars
所以,没关系。我们只想确保从电子表格中删除客户发票号不反映其第一次购买(或第二次购买,在第二种情况下)的任何行

是否有VBA(甚至只是函数)来实现这一点?即使是在步骤中:例如首先高亮显示这些行,然后使用另一个VBA删除高亮显示的行


同样,简而言之,我希望只保留每个客户ID的MIN(发票号)行。

使用COUNTIFS来计算客户号出现的次数。使用定位到第一个单元格并在向下拖动时更改的参照

假设您的客户编号在A列中,将其插入B1并向下复制:

=COUNTIFS($A$1:A1,A1)
相应地在1或2上过滤

编辑:

我不知道你只想要第一排。您可以利用MATCH将返回第一个结果的事实,并检查它是否等于行号:

=MATCH(A1,A:A,0)=ROW(A1)
请注意,如果数据不是从第1行开始,则可能需要稍微偏移
匹配。例如,如果数据从第3行开始,则需要将
匹配结果偏移2:

=MATCH(A1,A:A,0)+2=ROW(A1)

现在您可以对第一列进行过滤,第一列等于1或2,第二列等于
TRUE

是的,当然有“一个VBA(甚至只是函数)来实现这一点”。多么愚蠢的问题!雇佣一个程序员,他/她会告诉你同样的事情。这里有点不必要的回应,@Jeeped,因为提问毕竟是论坛的目的。谢谢Jonathan-但事实证明,要完成每个客户只返回第一张发票的最终结果仍然很困难。已将数据移动到MySQL以便更好地操作。