如何将文本拆分成列,然后为特定属性创建单独的列?

如何将文本拆分成列,然后为特定属性创建单独的列?

我有一列文本,格式如下

特性
admin_role=sales_other;;business_type=b2b;;categorisation_complete=yes;;company_reporting_segment_fy22=100+;;engage_usage=medium;;human_support_usage=high;;id=120518_1653500834_40618400058_cs;;job=支持团队协作;;lead_gen_usage=high;;primary_company_industry=软件与技术;;problem=外部协作;;product_area=应用程序与集成;;source_link=https://app.intercom.com/a/apps/tx2p130c/inbox/inbox/all/conversations/40618400058;;subject=unclassified;;theme=slack integration;;type=功能请求
business_type=b2c;;categorisation_complete=yes;;company_reporting_segment_fy22=500+;;engage_usage=medium;;human_support_usage=low;;id=001o000000yafi3aan_1653462492_ptbs;;job=omni-channel support;;lead_gen_usage=high;;primary_company_industry=软件与技术;;problem=channel customization;;product_area=apps & integrations;;source_link=n/a;;subject=customization;;theme=channel

我想将此文本拆分为每项属性对应的一列。如果我按“;;”拆分,并且由于并非所有属性(例如“admin_role”)都适用于每一行,我会得到类似下面的结果:

特性
admin_role=sales_other 业务类型=b2b
admin_role=其他_其他 业务类型=其他
业务类型=b2c 分类完成=是

我希望它采用下面的格式,因此有一列“admin_role”,“business_type”,“categorisation_complete”等。

特性
admin_role=sales_other 业务类型=b2b
admin_role=其他_其他 业务类型=其他
业务类型=b2c 分类完成=是

有办法实现这个吗?

答案1

我在 Excel 中找到了解决方案。可能还有其他更奇特的方法,但这对我来说绝对有效。我发现的缺点是,它依赖于你知道自己在寻找什么术语,而不是自己弄清楚。你可以制作一个非常复杂的公式来计算出所有结果,但如果不太可能改变,你最好自己动手制作这个列表。首先,我像这样设置工作表:

截屏

我在顶部列出了标签,在侧面列出了原始文本。屏幕截图显示了仅提取部分内容,=但我也会向您展示如何提取整个字符串。让我们分解一下这个公式:

=IFERROR(LET(tag,B$1,text,$A2,start,FIND(tag,text)+LEN(tag)+1,end,FIND(";",text,start),MID(text,start,end-start)),"")

LET()函数允许您定义变量,然后通过名称引用它们。variable, value除了最后一个项(即输出)外,其他项都是成对的。这些项如下:

  • tag,B$1保存我们正在寻找的标签。将其放在一个地方而不是整个公式中可以更轻松地更新。请注意,列引用是相对的,B但行是绝对的,$1因此它会在您复制/粘贴时更新,但不会向下更新。
  • text,$A2保存我们正在搜索的文本。同样,引用会随着您向下复制/粘贴而更新,但不会向内复制/粘贴。
  • start,FIND(tag,text)+LEN(tag)+1定义我们想要在结果中显示的字符串的开头。它会在文本中找到标签,然后将标签的长度加上等号的长度。如果您想要整个字符串,请+LEN(tag)+1从末尾删除。
  • end,FIND(";",text,start)通过查找字符串开始后的第一个分号来定义字符串的结束。
  • MID(text,start,end-start)从大输入字符串中提取我们想要的字符串。

最后,我们将整个内容包装起来,这样如果在中找不到IFERROR(~,"")它就会返回空白。tagtext

设置完成后,您可以复制/粘贴尽可能多的数据行和尽可能多的标签列。


如果您有大量行并且需要帮助获取标签列表,我建议您这样做:

  1. 将所有数据粘贴到文本编辑器中
  2. 查找/替换每个;;带有换行符的项
  3. 将数据复制回电子表格
  4. 使用此函数提取之前的所有内容=(假设数据开始于A1=LEFT(A1,FIND("=",A1)-1)
  5. 将该公式复制/粘贴到整个列表中
  6. 将该列的值复制/粘贴到其他位置,然后删除重复项,或者使用该列上的数据透视表来获取唯一列表,或者=SORT(UNIQUE(B:B))在其他地方使用。
  7. 复制粘贴转置将该唯一列表放入第 1 行,这样您就有了所有列标题。

相关内容