我有一列包含以下格式的文本
特性 |
---|
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_company_usage=high;;primary软件和技术;;问题=外部协作;;product_area=应用程序和集成;;source_link=https://app.intercom.com/a/apps/tx2p130c/inbox/inbox/all/conversations/40618400058;;subject=unclassified ;;theme=slack 集成;;type=功能请求 |
business_type=b2c;;categorisation_complete=yes;;company_reporting_segment_fy22=500+;;engage_usage=medium;;human_support_usage=low;;id=001o000000yafi3aan_1653462492_ptbs;;job=全渠道支持;;lead_gen_usage=high;;technologyprimary_company_industry=软件;problem=渠道定制;;product_area=apps & integrations;;source_link=n/a;;subject=customization;;theme=channel |
我想将此文本拆分为每个属性的列。如果我按';;'分割,并且因为并非所有属性(如'admin_role')都适用于每一行,我会得到如下内容:
特性 | |
---|---|
admin_role=sales_other | 业务类型=b2b |
admin_role=other_other | 业务类型=其他 |
业务类型=b2c | categorisation_complete=是 |
我想要的是它采用以下格式,因此“admin_role”、“business_type”、“categorisation_complete”等的列。
特性 | ||
---|---|---|
admin_role=sales_other | 业务类型=b2b | |
admin_role=other_other | 业务类型=其他 | |
业务类型=b2c | categorisation_complete=是 |
有没有办法做到这一点?
我在 Excel 中制定了一个解决方案。可能有更好的方法,但这绝对对我有用。我看到的缺点是它依赖于您知道要查找的术语,而不是自己弄清楚。您可以制定一个非常复杂的公式来计算所有内容,但是,如果它不太可能改变,您最好自己投入体力劳动来制作该列表。首先,我像这样设置工作表:
我在顶部列出了标签,在侧面列出了原始文本。屏幕截图显示了仅提取部分之后的内容,
=
但我也会向您展示如何拉出整个字符串。让我们分解一下这个公式:该
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(~,"")
,如果tag
在text
.设置完成后,您可以复制/粘贴尽可能多的数据行以及尽可能多的标签列。
如果您有大量行并且需要帮助获取标签列表,我建议您这样做:
;;
用换行符查找/替换每个=
的所有内容(假设数据开始于A1
:=LEFT(A1,FIND("=",A1)-1)
=SORT(UNIQUE(B:B))
其他地方使用。