Excel 中字符串转换为列

Excel 中字符串转换为列

我有一个这样的字符串:

"page_age:15#resp_gender:4#EN01CTY:3#QMktSize:6#Page_Device_usagesm:8"

并在 Excel 中想要获得如下格式的结果:

Resp_gender   En01cty  Page_Device_usage
     4           3           8

答案1

好的,如果只对一行执行此操作,则 T2C(文本到列)+ C&TP(复制和转置粘贴)就足够了。只需像这样执行每个步骤 2 次:

带分隔符的 T2C#将会改变

page_age:15#resp_gender:4#EN01CTY:3#QMktSize:6#Page_Device_usagesm:8

     A      |       B       |     C     |      D     |          E
page_age:15 | resp_gender:4 | EN01CTY:3 | QMktSize:6 | Page_Device_usagesm:8

C&TP 会将其改为

page_age:15
resp_gender:4
EN01CTY:3
QMktSize:6
Page_Device_usagesm:8

下一个带分隔符的 T2C:会将其更改为几乎完成的表格

         A          |  B
page_age            | 15
resp_gender         |  4
EN01CTY             |  3
QMktSize            |  6
Page_Device_usagesm |  8

最后的 C&TP 会将其切换为我们想要的外观

    A    |      B      |    C    |     D    |          E
page_age | resp_gender | EN01CTY | QMktSize | Page_Device_usagesm
   15    |      4      |    3    |     6    |          8

但是,对多行执行此操作将需要大量工作。现在我们假设我们只寻找具有以下值的特定值:

page_age:15#resp_gender:4#EN01CTY:3#QMktSize:6#Page_Device_usagesm:8
page_age:3#resp_gender:11#EN01CTY:9#QMktSize:4#Page_Device_usagesm:1
page_age:9#resp_gender:5#EN01CTY:7#QMktSize:2#Page_Device_usagesm:12
page_age:22#resp_gender:8#EN01CTY:1#QMktSize:5#Page_Device_usagesm:2

(在单元格中添加此项A2A4因为我们想将第 1 行用作标题)

我们知道什么?值前面总是 a,:值后面也是 a #(最后一项除外)。

我们想要什么?剪切我们想要的值前后的文本。

让我们再次假设一些事情:我们想要来自的值resp_gender,因此我们将其设置resp_gender为 B 列(在 B1 中)的标题。

开始剪切我们值前面的所有内容。这样我们就需要找到它的起始位置。该FIND函数将执行此操作。因此,我们尝试使用它=FIND(B$1,$A1)$是为了稍后使其可拖动),并得到 13。只需将其放入RIGHT公式中即可LEN进行测试:

=RIGHT($A1,LEN($A1)-FIND(B$1,$A1)) 

将带我们到达esp_gender:4#EN01CTY:3#QMktSize:6#Page_Device_usagesm:8

好的,我们还需要减去标题本身的长度,因此它变成:

=RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-LEN($B1)) 

我们得到了4#EN01CTY:3#QMktSize:6#Page_Device_usagesm:8。太棒了,不需要计算:因为它已经被剪切了。我们现在需要做的就是剪切值后面的文本。

为了不破坏公式并使其保持简短,我们将其保留在 B2 中,并在 C2 中进行正确的剪切(暂时)。众所周知,我们可以#很容易地找到FIND。将其与LEFT公式合并应该会得到我们想要的结果:

=LEFT(B2,FIND("#",B2)) 

给出了4#。好的,一个字符太长了,所以只需要一个-1就可以了:

=LEFT(B2,FIND("#",B2)-1)

现在,我们只需从 B2 复制公式(不带 )并将其粘贴到第二个公式中的每个 B2 上,即可将两个公式合并在一起=。这样我们得到:

=LEFT(RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-LEN($B1)),FIND("#",RIGHT($A2,LEN($A2)
 -FIND(B$1,$A2)-LEN($B1)))-1)

返回4。看起来它有效。检查所有标题时,如果我们要查找最后一部分(后面没有#),我们会遇到问题。但一个简单的IFERROR就可以解决这个问题。所以我们最终得到这个:

=IFERROR(LEFT(RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-LEN($B1)),FIND("#",RIGHT($A2,LEN($A2)
 -FIND(B$1,$A2)-LEN($B1)))-1),RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-LEN($B1)))

以上就是关于获取所需公式的大量文字。但请将其作为一个小教程,以便将来获取公式(请始终记住,有多种方法可以获取此公式)。

相关内容