我想在每4位数之后添加逗号,例如45700153920458799220
。我为=LEFT(B1,4)&","&MID(B1,5,4)&","&RIGHT(B1,4)
尝试了此39297500424
。但是超过12长度呢?
答案 0 :(得分:1)
试试这个
=LEFT(B1,4)&","&MID(B1,5,4)&","&MID(B1,9,4)&","&MID(B1,13,4)
继续....我不会使用RIGHT,除非你知道你的数字长度是4的倍数,因为它会得到错误的结果。
答案 1 :(得分:1)
如果您的号码长度超过16,那么您需要将其作为文本输入,因为Excel的限制为15位数。
使用A1中的字符串的一种方法是:
A2: =IF(RIGHT(REPLACE(A1,4*ROWS($1:1)+ROWS($1:1),0,","),1)=",","",REPLACE(A1,4*ROWS($1:1)+ROWS($1:1),0,","))
并填写下来,直到你得到空白,即使你有数千个数字。
然后,在其他一些单元格(下面的截图中的B1)中输入:
=LOOKUP(2,1/LEN($A:$A),$A:$A)
将返回A列中的最后一个非空白条目,这是您的结果。
对于更灵活的东西,建议使用VBA编写的UDF(用户定义函数)。以下UDF有一些可选参数,如果需要,可以指定要插入的不同字符和不同的间距。如果你没有指定除字符串以外的任何内容,它将每隔四周插入一次逗号。
它还演示了如何使用VBA Format
函数。
Option Explicit
Function InsertChar(STR As String, Optional sInsertCharacter As String = ",", Optional lSpacing As Long = 4) As String
Dim sCharString As String
Dim sFormatString As String
Dim sTemp As String
Dim I As Long
For I = 1 To lSpacing
sCharString = sCharString & "&"
Next I
sCharString = sCharString & sInsertCharacter
For I = 0 To Len(STR) \ lSpacing
sFormatString = sFormatString & sCharString
Next I
sFormatString = "!" & Left(sFormatString, Len(sFormatString) - 1)
sTemp = Format(STR, sFormatString)
If Right(sTemp, 1) = "," Then sTemp = Left(sTemp, Len(sTemp) - 1)
InsertChar = sTemp
End Function
答案 2 :(得分:1)
以下 U ser D efined F 功能将在每4个字符后插入一个逗号,从左侧开始强>:
Public Function fracture(r As Range) As String
Dim s As String, s2 As String
Dim L As Long, i As Long
s = r(1).Text
L = Len(s)
s2 = ""
For i = 1 To L
s2 = s2 & Mid(s, i, 1)
If i Mod 4 = 0 Then s2 = s2 & ","
Next i
fracture = s2
End Function
示例:
注意:强>
用户定义函数(UDF)非常易于安装和使用:
如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除UDF:
从Excel使用UDF:
=断裂(A1)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关UDF的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其生效!