如何在 Google 工作表中连接具有动态长度的单词中的数字

How to concatenate digits from words with dynamic lengths in Google Sheets

我有一个用逗号分隔的单词的列 A。在随后的专栏中,我使用 Vlookup 将单词替换为 ID。我打算用这样的输出填充数据 a:4:{i:0;s:2:"41";i:1;s:2:"40";i:2;s:2:"43";i:3;s:3:"153";}

我需要将第一个数字与 i:0;s:2: 连接起来,其中 0 是数字的第一个索引,2 是第一个数字中的字符数。第二个数字 40 变成 i:1;s:2: 而第三个 143 变成 i:2;s:3: 注意 3 因为 1433 个字符。

41 40 143

我已经取得了长足的进步,但让它充满活力是我面临的挑战。这样当A中的文本发生变化时,公式是动态的。

我的公式 in D2 =ARRAYFORMULA(IF(A3:A="","",(LEN(A2:A)-LEN(SUBSTITUTE(A2:A,",",""))+1))) 统计A中的单词数。 在 E2 中使用 flatten, trim, split, textjoin 我用 ID 替换单词。

在 K 到 N 列中,我有个人数字,在 P 到 S 列中,我有数字字符计数。

预期的输出在 F2 中。但公式尚未完成,可能有更简单的方法来完成。我的公式不是动态的,这意味着它仍然需要修复才能动态地与其他词一起使用,而无需一次又一次地更改公式。

Link 到电子表格 https://docs.google.com/spreadsheets/d/12rXI4e8pYSdTHlIVgkKl66KNYUqQv3z9luazIxKADQM/edit?usp=sharing

使用:

=ARRAYFORMULA(IF(A2:A="",,"a:"&LEN(REGEXREPLACE(A2:A, "[^,]", ))+1&":{"&
 SUBSTITUTE(TRIM(FLATTEN(QUERY(TRANSPOSE(IFERROR("i:"&SEQUENCE(1, 100, )&";s:"&
 LEN(VLOOKUP(SPLIT(A2:A, ","), B2:C, 2, 0))&":"""&
     VLOOKUP(SPLIT(A2:A, ","), B2:C, 2, 0)&""";")),,9^9))), "; ", ";")&"}"))