首先说明一点,因为你的数字超出了15位,是不能通过自定义格式设置的,否则第15位后面的数字全变为0。你这个问题必须用VBA代码解决。
以设置B2至B30这个区域为例:
【第一步】:
选中B2至B30,右键设置单元格格式,设置为文本格式,否则无法输入超出15位的数字。
图一:
【第二步】:
图二:
箭头有点乱,仔细看着对照着图看我的说明:
点顶部的“开发工具”---点“VisualBasic”打开VB编辑器,
然后点你要设置的工作表名,
然后点下拉箭头,选择“Worksheet”
然后点另一个下拉箭头,选择“Change”
最后输入我画蓝框中的代码,即可完成,
最后。按CTRL+S保存,关闭VB编辑器。
【最后请看效果图】:
B2至B30区域中,数据发生变化的单元格必须符合19位时,就会自动分隔。
【为方便你复制,贴出代码如下】
Private Sub Worksheet_Change(ByVal Target As Range)
'以下三行绿字中提示的参数,你有可能需要根据实际情况调整。
x = Target.Row
y = Target.Column
If x >= 2 And x <= 30 And y = 2 Then '提示:x >= 2和x <= 30指第2至第30行、y = 2指第2列(即B列)
If Len(Cells(x, y)) = 19 Then '提示:19指字符数量,该区域有数据更新的单元格必须符合19位时自动进行以下操作
Cells(x, y) = Evaluate("MID(B" & x & ",1,4)&"" ""&MID(B" & x & ",5,4)&"" ""&MID(B" & x & ",9,4)&"" ""&MID(B" & x & ",13,4)&"" ""&MID(B" & x & ",17,3)") '提示:此行五个B是指列号
End If
End If
End Sub
先设置单元格格式然后再输入数字。
或者先设置文本再设置格式然后转化为数字。
*之所以这样操作是为了避免数字后面数字自动转化为0。
数字格式->自定义->设置格式为
0000 0000 0000 0000 000
=MID(A1,1,4)&" "&MID(A1,5,4)&" "&MID(A1,9,4)&" "&MID(A1,13,4)&" "&MID(A1,17,3)
把其中的A1换成相应单元格即可。
如果量不大,自己敲个空格,问题不就解决了!!!如果量大,可用VB代码解决!
Sub 转格式()
Dim arrValue()
ReDim arrValue(Len(ActiveCell.Value))
ActiveCell.NumberFormatLocal = "@"
If InStr(ActiveCell.Value, " ") = 0 And ActiveCell.Column = 2 Then '说明已转换过或不在当前列(假设第二列)
For i = 1 To Len(ActiveCell.Value)
arrValue(i) = Mid(ActiveCell.Value, i, 1)
Next
ActiveCell.Value = ""
For i = 1 To UBound(arrValue)
ActiveCell.Value = ActiveCell.Value & arrValue(i)
If i Mod 4 = 0 Then
ActiveCell.Value = ActiveCell.Value & " "
End If
Next
End If
End Sub