在Google表格中的Importhtml上按特定的字符串拆分列

时间:2018-08-12 21:05:19

标签: google-sheets

现在我有一个查询,它具有以下功能:

=QUERY(IMPORTHTML("myurl", "table", 0),"SELECT Col2, Col3, Col4, Col5 OFFSET 0", 1)

Col2以其职位名称命名:

John Doe Accounting Team
Jane Doe Accounting Team
Josh Doe Marketing Division
Johnathan Wade Sales Team
Jake Johnson Customer Support

我要的是在导入时将列分为两列:

John Doe III | Accounting Team
Jane Doe | Accounting Team
Josh Johnny Doe | Marketing Division
Johnathan Wade | Sales Team
Jake Johnson | Customer Support

我确实有可以手动输入的职位字符串,例如“会计团队”,“市场部”,“销售团队”和“客户支持”。

我在此功能中尝试了一些不同的拆分,但无法使任何东西正常工作。我收到循环计算错误。开启它们也无济于事。

3 个答案:

答案 0 :(得分:2)

RegEx应该可以帮助您:

示例公式:

=FILTER(REGEXREPLACE(A:A,REGEXEXTRACT(A:A," "&JOIN("| ",listOfPositions)),""),A:A<>"")

enter image description here

  • 您需要一个单独范围内的职位列表。
  • 添加空格以替换位置之前的空格
  • regexextract找到了要替换的正确位置
  • “ |”管道用于regex syntax.
  • 中的OR逻辑
  • 尝试=FILTER(REGEXEXTRACT(A:A," "&JOIN("| ",listOfPositions)),A:A<>"")获取职位列表
  • 您无法使用query来获得此权限,G表中的SQL受限制并且不支持Regex

答案 1 :(得分:0)

我看到了两种可能的方法,并且我假设数据不是病态的(例如,如果“ Grip”和“ Key Grip”团队中有工作,我们只能猜测该如何处理“ Frances Scott Key”握”)。统一的方针是相同的。找到团队。其他一切就是名字。我将团队放在第一位,但是可以逆转。 让我们假设QUERY结果位于D18中。从理论上讲,可以使用嵌入了QUERY的方法构建非常长的,不可抗辩的表达式,但是我认为最好只处理查询列中的结果,如果确实使您感到厌烦,请稍后将其隐藏。 情况1)在您的示例中,所有团队都有两个词。如果该模式成立,则将执行以下操作。在E18中,该团队是

=textjoin(" ",true,index(split(D18, " "),-1+len(split(D18, " "))),index(split(D18, " "),len(split(D18, " "))))

诚实地进行textjoin并跳过空白词可能是过大的。 [相反,您可以使用第一个单词&“”和第二个单词]。这两个索引函数正在捕获倒数第二个单词和拆分产生的最后一个单词。 并在F18中紧扣

=left(D18,len(D18)-len(E18)-1)

,您将在其中抓取开头的单词,而不是后面的空格。

情况2)假设我们不能指望两个字的东西。然后,让我们将您的4个团队放在A1,B1,C1和D1中。在这里,我在E2中有查询结果,但是当然可以更改。在F2中,您放置了以下稍微尴尬的表达式:

=if(right(E2,len($A$1))=$A$1,A1,if(right(E2,len($B$1))=$B$1,$B$1,if(right(E2,len($C$1))=$C$1,$C$1,if(right(E2,len($D$1))=$D$1,$D$1,""))))

将选择匹配的团队。然后使用

在G2中如上所述
=left(E2,len(E2)-len(F2)-1)

可以根据需要将这些公式下拉或内置到数组公式中。

答案 2 :(得分:0)

我的版本:

=arrayformula(if(len(B6:),SPLIT(B1:B,char(10)),))

结果可以放在任何一列,只需修改列字母