增加文本值

时间:2015-11-25 18:21:59

标签: excel excel-formula

我正在Excel中为一些实验室样本制作一个日志文件。在此日志中,我记录了日期,样品ID,存储样品的方框以及方框位置。例如:

SampleID    Study        Date      Box   Position    
12345       SomeStudy    date      1     A3
12346       SomeStudy    date      1     A4

位置始终从位置A3开始上升到A12,然后从B1到B12等......一直到H11。

所以我想在Excel中做的是使用IF语句检查其上方的单元格中的值并从数字中分割文本。

如果最后一个值是A7那么下一个将是A8,那么一个,直到达到A12;如果值为A12,则下一个值应为B1,依此类推......

3 个答案:

答案 0 :(得分:0)

返回当前单元格正上方的单元格值

INDIRECT(ADDRESS(ROW()-1,COLUMN()))

拆分字母和数字source(将A2替换为上述内容)

字母

LEFT(INDIRECT(...),MIN(FIND({0,1,2,3,4,5,6,7,8,9},INDIRECT(...)&"0123456789"))-1)

编号

RIGHT(INDIRECT(...),LEN(INDIRECT(...))-MIN(FIND({0,1,2,3,4,5,6,7,8,9},INDIRECT(...)&"0123456789"))+1)

如果递增字母的声明

IF(RIGHT(...)>=12,CHAR(CODE(LEFT(...)+1),LEFT(...))

如果增加数字的语句

IF(RIGHT(...)>=12,1,RIGHT(...)+1)

最后在CONCATENATE()

中包装上述两个IF语句
=CONCATENATE(IF(...),IF(...))

当你把它们放在一起时,最终的公式看起来就像一个怪物。 你必须使用A1播种第一个单元格,但是你应该可以从那时开始拖动公式。

如果将字母和数字分隔成不同的列(例如position_x和position_y),假设这是某种样本网格,则会更容易。

答案 1 :(得分:0)

您可以使用MID函数(从文本字符串中选取特定字符)以及CHAR / CODE函数(查看字符的ASCII代码,反之亦然)来执行此操作。因为您的数据只涉及1个字母,所以这是相对严格的,如下所示(对于单元格D3,它看起来像第二行数据的上面位置,当前显示" A4"作为值) :

=IF(VALUE(MID(D2,2,2))<11,LEFT(D2)&VALUE(MID(D2,2,2))+1,IF(LEFT(D2)="H","A3",CHAR(CODE(LEFT(D2))+1)&3))

这样做:检查上面位置的最后1(或2)个字符 - 这是数字。如果该数字是&lt; 12,它引入上面位置的第一个字符,然后将数字增加1.否则,它将上面文本第一个字符的ASCII字符增加1,并在3上增加。

我已对此进行了测试并确认其按预期工作 - 但仅适用于您指定的范围。

编辑以反映循环停在11的事实,并在H11之后回收到A3。

答案 2 :(得分:0)

替代解释,假设系列的开头是在E1中输入,公式从E2复制到适合:

 =IF(E1="H11","A3",IF(LEN(E1)=3,IF(RIGHT(E1,2)="12",CHAR(CODE(LEFT(E1))+1)&1,LEFT(E1)&RIGHT(E1,2)+1),LEFT(E1)&RIGHT(E1)+1))