我有6,000行数据,每个单独的单元格如下:
Residential for sale:
31
Avg. asking price:
£414,353
Avg. sale listing age:
14 weeks
没有风格,还有一根长绳子。我正试图将Residential for sale
值(31
),Avg. asking price:
值(£414,353
),Avg. sale listing age:
值(14 weeks
)删除到每条线都有自己的细胞。例如,如果示例数据位于A1
,则上述提取的数据将位于B1
,C1
,D1
。
我一直在考虑将Regex作为一种方法来实现这一目标,但是在Google云端硬盘中无法找到方法,到目前为止我只发现了一种在Google云端硬盘中不起作用的VBA方式。
有什么想法吗?
答案 0 :(得分:0)
请尝试B1:
=query(split(A1,char(10)),"select Col2, Col4, Col6")
答案 1 :(得分:0)
如果在B2中输入以下内容,则会提取您想要的数字。但是,它在D,G和K列中返回它们。我不知道为什么。 = split(lower(A1)," abcdefghijklmnopqrstuvwxyz:")
我更新了上述配方,因为pnuts建议。这个比较好。谢谢。 以下脚本似乎解决了所有问题(空白列和缺少周数)。货币可以从格式菜单中格式化为英镑。
function splitData(){
var sheet = SpreadsheetApp.getActiveSheet();
var lr = sheet.getLastRow()
var range = sheet.getRange("A1:A"+lr);
val = range.getValues()
var s=[]
for(var i=0;i<val.length;i++){
var t = val[i][0]
s[i]=t.split(":")
}
for(var x=0;x<s.length;x++){
for(var y=1;y<3;y++){
s[x][y] =s[x][y].replace(/\D/g,"")
}}
var finalArr = []
for (var i = 0; i <lr; i++) {
finalArr[i] = [];
for (var j = 1; j <= 3; j++) {
finalArr[i].push(s[i][j]);
}
}
sheet.getRange(1,2,lr,3).setValues(finalArr)
}
答案 2 :(得分:0)
除了先前的解决方案并假设您的数据在col A的第一行开始,也请尝试:
=ArrayFormula(if(len(A:A), regexextract(A:A, {"(\d+)","price:\n(.+)\n", "\n(.+)$"}),))
看看是否有效?
答案 3 :(得分:0)
=拆分(替代(替代(替代(替代(A7,“住宅待售:”,“”),“平均要价:”,“;”),“ 平均。销售清单年龄:“,”;“),”;“)
基本上我用公式做的是用“”替换第一个标题为“待售住宅”的空值,然后我把另外两个变成“;”分隔符,以便您可以将整个事物包装在拆分公式中。
答案 4 :(得分:0)
如果您的原始数据确实包含所有这些新行,那么您可以尝试这样做:
=REGEXEXTRACT(A1,".*\n(.*)\n.*\n(.*)\n.*\n(.*)$")