每年的新老客户


0

我正在尝试确定每年的新客户和回头客数量。

样品清单

根据上表,我列出了新的和重复的客户,但是此过程是手动完成的,因此我确实有很多客户可以识别。

新/重复客户列表

我可以知道是否有任何公式,以便可以确定每年的新客户/重复客户数量。


好像yoiu需要一个数据透视表...
Dave

好吧,这就是数据透视表中的表
2017年

2012年是您的起点吗?
patkim

实际上,参考点是当年的前几年。我没有2012年之前的数据,所以,我只是采用了2012
2017年

@broiling,没人知道吗?您尚未在问题中对此进行解释。请编辑您的问题来解释这一点
Dave

Answers:


0

如果可以使用VBA,则只需单击一下按钮即可获得解决方案。提出的解决方案主要使用很少支持VBA的公式,这是一个两步解决方案。

由于您正在使用数据透视表,因此通过交换数据透视表中的行和列,即以年为行,客户为列,可以更轻松地查看数据格式。

将工作簿另存为xlsm(启用宏的Excel工作簿)在表所在的表中,按ALT + F11打开VBA编辑器。从“插入”菜单中插入一个模块,并将以下代码粘贴到其中。保存代码和工作簿。

Function TEXTJOIN(delimiter As String, ignore_empty As Boolean, ParamArray cell_ar() As Variant)
For Each cellrng In cell_ar
    For Each cell In cellrng
        If ignore_empty = False Then
            result = result & cell & delimiter
        Else
            If cell <> "" Then
                result = result & cell & delimiter
            End If
        End If
    Next cell
Next cellrng
TEXTJOIN = Left(result, Len(result) - Len(delimiter))
End Function

这是一个TEXTJOIN函数。这在Office 365订阅中可用,但在其他版本中不可用。VBA代码继承自以下文章。

来源 https://www.get-digital-help.com/2016/06/07/textjoin-function/

在此处输入图片说明

您需要创建一个类似的表,其中将1转换为OLD&NEW,如本示例中上图第9行中所示。

单元格B9中的公式

=IF(ISBLANK(B5),"",IF(ISERROR(MATCH(B5,B4,0)),"NEW","OLD"))

单元格B10中的公式

=IF(ISBLANK(B6),"",IF(ISERROR(MATCH(B6,B4:B5,0)),"NEW","OLD"))

单元格B11中的公式

=IF(ISBLANK(B7),"",IF(ISERROR(MATCH(B7,B4:B6,0)),"NEW","OLD"))

现在,将三个公式拖到表的整个长度上。相关的您的1不会翻译成OLD&NEW。这是第一步。

在下面创建一个Years表,并在OLD&NEW两列中创建

B15中的公式

=CONCATENATE(COUNTIF(B9:I9,"OLD"),"(",TEXTJOIN(",",TRUE,IF(B9:I9="OLD",$B$3:$I$3,"")),")")

按CTRL + SHIFT + ENTER创建一个数组公式。现在,您将看到该公式用大括号括起来,并根据需要在该单元格中显示当年的预期结果。向下拖动此公式,直到出现所需的年数。

类似地,将以下数组公式放在C15中

=CONCATENATE(COUNTIF(B9:I9,"NEW"),"(",TEXTJOIN(",",TRUE,IF(B9:I9="NEW",$B$3:$I$3,"")),")")

并将其向下拖动。

这是一个两步过程。为了获得更好的版本,可以选择完整的VBA代码,只需单击一个按钮即可实现此目的。

由于自定义创建了TEXTJOIN函数VBA代码,因此该解决方案仅在此工作簿中有效。但是,如果您有Office 365订阅,则它应在Excel 2016中无缝运行。


嗨,帕特,非常感谢您的帮助。我不想显示客户名称,所以我只想显示新客户的数量。是否有任何VBA或DAX功能?
2017年

0

也许条件格式可以在这里完成工作。在下表中,新客户为绿色,重复客户为蓝色。

在此处输入图片说明

要成为新客户,该单元格必须为1,并且所有左侧的单元格都必须为空白;要成为“回头客”客户,该单元格必须为1,并且任何左侧的单元格都必须为1。

因此,简单的AND()函数可以区分这些。

要为新客户设置格式,请选择C2:F10,然后从“格式”菜单中选择“条件格式...”。添加一个新规则,然后选择“经典”作为样式。从下拉菜单中选择“使用公式...”,选择一种格式样式,然后在框中输入以下公式:

=AND(SUM($B2:B2)=0,C2=1)

对于回头客,添加另一个规则并使用以下公式:

=AND(SUM($B2:B2)>0,C2=1)

注意:执行此操作的过程可能会有所不同,具体取决于您的Excel版本。关键是找到允许您使用公式来设置格式的对话框。

如果您不希望使用条件格式,则可以在工作表的另一部分使用类似的公式:

=IF(AND(SUM($B2:B2)=0,C2=1),"New","")

=IF(AND(SUM($B2:B2)>0,C2=1),"Repeat","")

向右和向下填充这些将标识“新客户”和“重复客户”。

希望对您有所帮助,也感谢您清楚地解释了您要做什么。我记得您曾经提过的问题,并添加了一个小表,其中显示了哪些客户是新客户,哪些客户是回头客,这一点就更加清楚了。


非常感谢,感谢您的帮助。该解决方案效果很好:)
2017年

但是,(1)只是示例,它反映了费用。因此,对我来说,要全部调整为1很难

您是说单元格不包含1,而是一个数字吗?如果这是您的意思,请将更改C2=1C2>0
Bandersnatch

是的,我们从客户那里收取的费用。减去数字怎么样?c2 <> 0吗?
2015年

那应该工作。
Bandersnatch
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.