增强的 Excel 公式使用

增强的 Excel 公式使用
Products    PD1 PD2 PD3 PD4 PD5 PD6 Summary of Purchases
Customer A      2   2   3   5   6   PD2, PD3, PD4, PD5, PD6
Customer B      2   2       1       PD2, PD3, PD5, 

我如何汇总购买情况,以便查看行中是否为空白并获取相应的产品列表。

答案1

尝试以下操作UDF()

Public Function qwerty(rIN As Range) As String
    Dim r As Range, s As String

    s = ""
    For Each r In rIN
        If r.Value <> "" Then
            s = s & "," & r.EntireColumn.Cells(1).Value
        End If
    Next r
    qwerty = Mid(s, 2)
End Function

在此处输入图片描述

用户定义函数 (UDF) 非常容易安装和使用:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要从 Excel 使用 UDF:

=qwerty(A1:Z1)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

答案2

另一种方法不使用 vba,而是使用名称和公式来检查 PD1 是否有条目。这可以在行中的任何位置使用。要检查客户 A,请转到第二行数据右侧的任意空白单元格并输入

=如果($b2="","",$b$1 & ",")

这将是空白或 PD1,取决于 b2 的内容复制公式,然后使用名称管理器(公式功能区)创建一个新名称 PD_1 并将公式粘贴到底线上,名称管理器将对其进行稍微转换,例如

=IF(Sheet1!$B2="","",Sheet1!$B$1 & ",")

对其余产品遵循相同的模式,使用正确的列字母示例 $c2="",$c$1 代表 PD2 等。

你可以直接使用 PD_#,但我想再起一个名字

PD_Sum=trim(pd_1&Pd_2&PD_3&PD_4&PD_5&PD_6)

然后在总和列中输入 =PD_Sum

如果你想要它没有,那么最后就是

=iferror(left(PD_sum,len(PD_sum)-1),"")

如果任何单元格中未选择任何内容,则包含 iferror,它将保持空白,并且不会生成难看的错误消息。

相关内容