我有一张包含一些客户姓名的 Excel 表。这些客户姓名并不唯一。除此之外,我们还需要其他列中的大量数据以及客户姓名。
出于另一个相关目的,我需要一个唯一客户名称列表,并为每个客户添加自定义状态。我希望将其放在单独的表中,因为有人必须手动添加该状态。将其添加到原始表中需要更多努力,因为他们必须将其添加到客户的每次出现中。
问题是它需要在 Excel Online 中工作(作为 M365 的一部分),并且新表应格式化为表格(而不仅仅是某个范围)。我已经使用 Power Query 创建了该新表,并且它可以工作并且已更新。但是,据我所知,无法在 Excel Online 中刷新该查询 - 它仅在应用程序中打开文件时才有效(而不是在浏览器中)。
我尝试了数据透视表,但是无法添加状态列。
我也尝试了溢出的 UNIQUE 公式,它给了我想要的结果,我可以根据需要添加列,但我无法将范围格式化为表格(因为表格中没有溢出功能)。
有人知道我如何在新表中从原始表中获取唯一的客户名称并在新表中添加更多自定义列吗?(可以使用 Office 脚本和 Power Automate 进行刷新。)
谢谢!克里斯
答案1
我最初的想法是建议在表外使用 UNIQUE 作为动态溢出数组。如果您愿意牺牲表要求,这将非常有效。
只要您的数据源来自 Excel 工作簿或 OData Feed,Power Query 选项就应该有效。请参阅这里。
一个潜在的问题:客户名称和状态仅通过一个公共行号(不是唯一的数据库键)链接。如果您碰巧对源数据进行排序或插入或删除客户行,则唯一名称在第二张表中出现的顺序将发生变化,并且不再与正确的状态一致。
可靠地处理此问题的最佳方法可能是使用 VBA。编写一个宏来刷新唯一名称列表并将其与旧状态列表(其中包含作为值而不是公式复制的静态名称)合并。或者,您可以尝试只添加到源列表的底部,或者至少在 C 列中保留复制和粘贴的“作为值”名称列表(A 列是 UNIQUE 公式,B 列是状态)。这样,您至少可以偶尔检查 A 是否与 C 匹配,如果不匹配,则进行手动更正。