replace数千个Excel数据的单元格中的一部分数据

我有一个大的电子表格,列数据如下:

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”,除了字母“I” ,它也可以是“O”。 此外,有些可能会丢失一些值,例如ABC:3:I.1 ,这些值从数据中缺失。 我不太熟悉Excel公式或VBA代码。 有谁知道如何做到这一点? 我不知道要使用哪种方法,因为如果有人为我提供VBA解决scheme,我不介意学习一些VBA代码。

我正在考虑使用某种循环以及一些条件语句。

谢谢!

请尝试 :

 =LEFT(F11,FIND(":",F11))&MID(F11,FIND(":",F11,6)+1,1)&".Data["&MID(F11,FIND(":",F11,2)+1,1)&"]."&RIGHT(F11,1) 

假设放置在Row11中,并且数据从Row11开始在ColumnF中。


趣闻:

  1. 当这个A被首次发布时,它只试图解决列表示例的input和输出问题。 我暂时删除了这个版本,同时处理了表格中的内容,因为ABC有时可能是ABCD ,而I可能有时是O
  2. OP已经发布了一个我编辑的答案,使其没有明显的变化,但显示为两个字符的删除。 OP的公式副本在我编辑之前出现了一个语法错误。
  3. OPbuild议对我的答案进行编辑,但是这被审查过程拒绝了。 碰巧,我认为编辑build议是不正确的。
  4. 我再次编辑我的答案,以包括这些“好奇心”,并匹配OP在他的答案中使用的单元格引用。
 =LEFT(A1,SEARCH(":",A1)) & MID(A1, SEARCH(".",A1)-1, 2) & "Data[" & MID(A1,SEARCH(":",A1)+1,1) & "]" & RIGHT(A1,2) 

在pnuts的帮助下,我能够想出我自己的解决scheme:

 =LEFT(F11,LEN(F11)-5)&MID(F11,LEN(F11)-2,2)&"Data["&MID(F11,LEN(F11)-4,1)&"]"&RIGHT(F11,2) 

我的解决scheme是基于stringABC:1:I:0最后六个值的长度始终与我拥有的所有数据大小相同的事实,因此您可以看到LEN(F11)-some number在我的代码。 大小改变的唯一部分是第一部分,在这种情况下ABC也可以是ABCDEF等等。

如果您想使用公式而不是VBA,一个简单的select是将数据拆分为4列,使用“文本到列”选项 – 首先使用冒号作为分隔符分割,然后使用完全停止/句点作为分隔符。

一旦你有4列数据(每块一个),你可以使用连接函数来join它们,并添加额外的字符: =CONCATENATE(A1,":",C1,".","Data[",B1,"].",D1)

如果你有额外的/替代的字符(例如ABCD而不是ABC),这应该仍然有效,只要你有相同的分隔符,但显然你需要testing以确保。