将选择数据从A1提取到B1

时间:2015-11-13 17:59:43

标签: regex google-sheets

我有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,则上述提取的数据将位于B1C1D1

我一直在考虑将Regex作为一种方法来实现这一目标,但是在Google云端硬盘中无法找到方法,到目前为止我只发现了一种在Google云端硬盘中不起作用的VBA方式。

有什么想法吗?

5 个答案:

答案 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(.*)$")