我正在将SAAS中的数据提供给Google表格,并且需要对其进行格式化以便能够使用它。
大多数列都没问题,但是一列中有多个参数。每个单元格看起来像(数据匿名):
affiliate_fees: None
affiliate_percent: 0.X
amount_refunded: 0
author_fees: 0
author_id: xxxx
author_percent: 0.5
coupon_id: xxxx
created_at: 2016-xxxxx
currency: USD
custom_gateway?: None
earnings_usd: None
meta: {u'url': None, u'class': u'transaction', u'image_url': None, u'description': None, u'name': u'xxxx'}
net_charge: xxx
net_charge_usd: xxx
paypal_payment_id: PAY-XXXXXXX
purchased_at: 2016-xxxx
refundable: True
sale_id: xxxx
status: None
stripe_charge_token: None
stripe_invoice_id: None
total_fedora_fee: None
total_processor_fee: None
user_id: xxxx
vat_fees: None
我已经了解了如何SPLIT
将数据分成不同的列 - 我是通过=SPLIT(CC2,CHAR(10))
现在我想做的事情,理想情况是在同一个操作中,是在第一次冒号:
所以目标是:最终只将值(:
之后的部分)扩展到不同的列。我可以手动输入列名。例如:
--------------------------------------------------
| affiliate_fees | affiliate_percent |
--------------------------------------------------
| None | 0.X |
--------------------------------------------------
| ... | ... |
--------------------------------------------------
任何提示?谢谢你的时间!
注意:我真的不需要meta:
行,可以将其丢弃。我把它留在那里是因为它可能(或可能不会)使事情变得更加棘手
答案 0 :(得分:1)
几个月前推出的Google表格"将文字拆分为专栏"作为菜单命令。有关详细信息,请参阅Separate cell text into columns。
分开文字后,您可以使用copy&粘贴>转置
单个公式替代方法是使用
=ArrayFormula(transpose(REGEXEXTRACT(A1:A25,{"(.*[\w\?])+\:","\: (.*)+"})))
这将返回一个25 x 2的数组,您不必手动添加列标题。
如果您仍想使用SPLIT,可以使用": "
作为分隔符,使用FALSE作为第三个参数来威胁它们作为单个分隔符,但这也会分割{{1}分成几列。
假设您的数据从A1开始,那么使用的公式是:
meta: ...
要包含所有包含数据的行,您必须填写此公式。然后复制&粘贴>转置。
答案 1 :(得分:0)
在this spreadsheet中,我在单元格E2中使用了这个公式
=ArrayFormula({regexreplace(split(A3, char(10)), "\:(.+)",""); regexreplace(split(A3, char(10)), "(.+)\: ","")})
这将创建一个包含标题的行和第2行中的值。如果您不想要标题,只需使用
=ArrayFormula(regexreplace(split(A3, char(10)), "(.+)\: ",""))
看看这对你有用吗?