我试图用excel公式来解决这个问题,但是它太复杂了,因为我需要将工作簿与公式聚集在一起。所以我转向VBA寻求帮助。到目前为止,我发现的所有VBA主要仅用于修剪单个单元字符。
我的项目需要的内容如下:
A1-Name
B1-Colour
C1-Name(Colour)
如果LEN(C1)小于81则没有任何修剪。否则,TRIM A1仅在不改变B1的情况下,因此最终结果是LEN(C1)始终小于81.
感谢。
我尝试的是:
- 我将在单元格AA2中的B2上执行“len”,然后在单元格AB2中的C2上执行另一个“len”
- 然后我在单元格D2中组合了B2和C2
- 对细胞E2中的细胞D2做另一个“len”
- 如果E2中的值超过80,那么我将对另一个单元格中的单元格B2做“正确”。将从单元格B2中扣除的值为AA2-80 + AB2。
- 一旦完成,新的装饰B2将与另一个单元中的C2重新组合。
这是太多的新细胞。正如你所看到的,我要隐藏一些构成细胞F2内部细胞的细胞。所以我在这里。用那个字母“E”来突出那个聚光灯,这样Excelman就会来救援。
答案 0 :(得分:0)
一个非常简单的Excel公式应该做你想要的是
=LEFT(A1,MAX(0,78-LEN(B1))) & "(" & B1 & ")"
即。从A1中获取尽可能多的字符,以便在连接到"("&B1&")"
时,总数不会超过80个字符,然后将其连接到"("&B1&")"
。
注意:上面公式中的单元格引用基于您的原始问题。根据截图和您问题的编辑,公式为:
=LEFT(B2,MAX(0,78-LEN(C2))) & "(" & C2 & ")"
如果你肯定需要VBA,你可以在VBA中使用相同的功能(即Left
和Len
)和相同的运算符(即-
和&
)用于Excel。唯一的问题是MAX
,需要使用Application.Max
或If
语句替换。