我有一个包含列数据的大型电子表格,如:
ABC:1:I.0
ABC:1:I.1
ABC:1:I.2
ABC:1:I.3
ABC:2:I.0
ABC:2:I.1
ABC:2:I.2
ABC:2:I.3
ABC:3:I.0
ABC:3:I.2
ABC:3:I.3
ABC:4:I.0
ABC:4:I.1
ABC:4:I.2
ABC:4:I.3
ABC:5:I.0
ABC:5:I.1
ABC:5:I.2
ABC:5:I.3
ETC.
我需要用以下内容替换上面的内容:
ABC:I.Data[1].0
ABC:I.Data[1].1
ABC:I.Data[1].2
ABC:I.Data[1].3
ABC:I.Data[2].0
ABC:I.Data[2].1
ABC:I.Data[2].2
ABC:I.Data[2].3
ABC:I.Data[3].0
ABC:I.Data[3].2
ABC:I.Data[3].3
ABC:I.Data[4].0
ABC:I.Data[4].1
ABC:I.Data[4].2
ABC:I.Data[4].3
ABC:I.Data[5].0
ABC:I.Data[5].1
ABC:I.Data[5].2
ABC:I.Data[5].3
ETC.
以下是数据样本,大多数数据遵循类似的格式,但命名" ABC"除外,它们的大小可能不同,因此它可能是" ABCD&# 34;除了字母" I",它可以是" O"同样。此外,有些可能缺少某些值,例如数据中缺少的ABC:3:I.1
。我不太熟悉excel公式或VBA代码。有谁知道如何做到这一点?我不喜欢它必须采用哪种方法,因为如果有人向我提供VBA解决方案,我不介意学习一些VBA代码。
我在考虑使用某种循环和一些条件语句。
谢谢!
答案 0 :(得分:1)
=LEFT(F11,FIND(":",F11))&MID(F11,FIND(":",F11,6)+1,1)&".Data["&MID(F11,FIND(":",F11,2)+1,1)&"]."&RIGHT(F11,1)
向下复制到适合,假设放在Row11中,并且您的数据在RowF中从ColumnF开始。
趣闻:
ABC
表中的内容ABCD
有时可能I
,而O
的内容有时可能是{{1}}。 答案 1 :(得分:1)
=LEFT(A1,SEARCH(":",A1)) & MID(A1, SEARCH(".",A1)-1, 2) &
"Data[" & MID(A1,SEARCH(":",A1)+1,1) & "]" & RIGHT(A1,2)
答案 2 :(得分:1)
在pnuts的帮助下,我能够找到自己的解决方案:
=LEFT(F11,LEN(F11)-5)&MID(F11,LEN(F11)-2,2)&"Data["&MID(F11,LEN(F11)-4,1)&"]"&RIGHT(F11,2)
我的解决方案基于以下事实:字符串ABC:1:I:0
中最后六个值的长度对于我拥有的所有数据的大小总是相同的,因此您在我的LEN(F11)-some number
中看到ABC
码。大小改变的字符串的唯一部分是第一部分,在这种情况下ABCDEF
也可以是{{1}}等。
答案 3 :(得分:0)
如果你想使用公式而不是VBA,一个简单的选择是使用Text To Columns选项将数据拆分为4列 - 首先使用冒号作为分隔符进行拆分,然后使用全站/期间作为分隔符。
一旦你有4列数据(每个块一个),你可以使用Concatenate函数加入它们并添加额外的字符:=CONCATENATE(A1,":",C1,".","Data[",B1,"].",D1)
如果你有额外/替代字符(例如ABCD而不是ABC),只要你有相同的分隔符,这仍然可以工作,但显然你需要测试以确保。