合并 access 中的单元格,以逗号分隔

Combine cells in access separated by comma

我不熟悉访问和编码。 我有一个包含大量数据的 sheet。我想通过 运行 查询或 VBA 在 Access 中获取一些指定数据。我想要的是基于列组合数据,每个数据用逗号分隔。我在下面粘贴 sheet 的示例:

输入sheet

输出数据 enter image description here

我尝试使用 COMMON 但没有成功。请帮忙

使用非规范化数据结构的Allen Browne Concat相关函数(经常引用,以Access: ConcatRelated works on a table, but not on a query开头):

SELECT Data.LocationID, 
"Paste: " & ConcatRelated("CustomerID","Data","LocationID=" & [LocationID] & " AND NOT Product1 IS NULL")
& "; " & "Chips: " & ConcatRelated("CustomerID","Data","LocationID=" & [LocationID] & " AND NOT Product2 IS NULL")
& "; " & "Oil: " & ConcatRelated("CustomerID","Data","LocationID=" & [LocationID] & " AND NOT Product3 IS NULL")
& "; " & "Pulses: " & ConcatRelated("CustomerID","Data","LocationID=" & [LocationID] & " AND NOT Product4 IS NULL")
& "; " & "Salt: " & ConcatRelated("CustomerID","Data","LocationID=" & [LocationID] & " AND NOT Product5 IS NULL")
& "; " & "Sugar: " & ConcatRelated("CustomerID","Data","LocationID=" & [LocationID] & " AND NOT Product6 IS NULL")
AS PS
FROM Data
GROUP BY Data.LocationID;

可以使用 UNION 查询对数据结构进行规范化。

SELECT LocationID, CustomerID, Product1 AS Product FROM Data WHERE NOT Product1 IS NULL
UNION SELECT LocationID, CustomerID, Product2 FROM Data WHERE NOT Product2 IS NULL
UNION SELECT LocationID, CustomerID, Product3 FROM Data WHERE NOT Product3 IS NULL
UNION SELECT LocationID, CustomerID, Product4 FROM Data WHERE NOT Product4 IS NULL
UNION SELECT LocationID, CustomerID, Product5 FROM Data WHERE NOT Product5 IS NULL
UNION SELECT LocationID, CustomerID, Product6 FROM Data WHERE NOT Product6 IS NULL;

然后生成所需的输出将涉及另外两个查询,每个查询都调用 ConcatRelated 函数。

查询 1:

SELECT LocationID, Product & ": " & 
ConcatRelated("CustomerID","unionData","LocationID=" & [LocationID] & " AND Product='" & [Product] & "'")
AS PS
FROM unionData
GROUP BY LocationID, Product;

查询 2:

SELECT LocationID, 
ConcatRelated("PS","Query1","LocationID=" & [LocationID], "", "; ")
AS ProductSold
FROM Query1
GROUP BY LocationID;

规范化数据的优点是无论涉及多少产品,都不必修改最后 2 个查询,并且在查询中不经常引用 ConcatRelated 函数。对于非规范化数据,如果您添加更多产品列,则必须修改查询以针对每个列再次调用函数。标准化 table 结构,可以消除 UNION 查询。