Office中国论坛/Access中国论坛

标题: [求助]如何解决单元格15位数字限制的问题? [打印本页]

作者: tuu602    时间: 2006-3-21 08:59
标题: [求助]如何解决单元格15位数字限制的问题?
Excel限制了单元格输入的数字只能有15位,超出的部分自动显示"0",我现在要输入的都是18位的身份证号码,请问怎样才能突破这个限制呢?
作者: rongduo    时间: 2006-3-21 15:46
将单元格格式设置为文本即可。

[此贴子已经被作者于2006-3-21 7:52:15编辑过]


作者: ddywy    时间: 2006-3-27 16:26
身份证从15位转化为18位函数版!(



'根据〖中华人民共和国国家标准 gb 11643-1999〗中有关公民身份号码的规定,
'公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。
'排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
'地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
'顺序码:表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。
'校验码:是根据前面十七位数字码,按照iso 7064:1983.mod 11-2校验码计算出来的检验码。下面举例说明该计算方法。
'15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19,但是这对于1900年出生的人不使用(这样的寿星不多了)
'某男性公民身份号码本体码为34052419800101001,首先按照公式⑴计算:
'∑(ai×wi)(mod 11)……………………………………(1)
'公式(1)中:
'i----表示号码字符从由至左包括校验码在内的位置序号;
'ai----表示第i位置上的号码字符值;
'wi----表示第i位置上的加权因子,其数值依据公式wi=2(n-1)(mod 11)计算得出。
'i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
'ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1表
'wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
''ai×wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1
'根据公式(1)进行计算:
'∑(ai×wi) = (21 + 36 + 0 + 25 + 16 + 16 + 2 + 9 + 48 + 0 + 0 + 9 + 0 + 5 + 0 + 0 + 2) = 189
'189 ÷ 11 = 17 + 2 / 11
'∑(ai×wi)(mod 11) = 2
'然后根据计算的结果,从下面的表中查出相应的校验码,其中x表示计算结果为10:
'∑(ai×wi)(mod 11) 0 1 2 3 4 5 6 7 8 9 10
'校验码字符值ai 1 0 x 9 8 7 6 5 4 3 2
'根据上表,查出计算结果为2的校验码为所以该人员的公民身份号码应该为 34052419800101001x。
'-------------------------------------------------------------------------------
Public Function IdFunc(ByVal id As String) As String
    Dim Wi, Ai As Variant
    Wi = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1)    '表示第i位置上的加权因子,其数值依据公式wi=2(n-1)(mod 11)计算得出。
    Ai = Array("1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2")    '校验码字符值

    Dim i, j, s As Integer
    Dim newid As String

    If VBA.Len(id) <> 15 Then
        IdFunc = ""
    Else
        newid = id
        id = Left(newid, 6) & "19" & Right(newid, Len(id) - 6)
        s = 0

        For i = 0 To 16
            On Error Resume Next

            j = Mid(id, i + 1, 1) * Wi(i)
            s = s + j

        Next i

        s = s Mod 11
        IdFunc = id & Ai(s)

    End If
End Function

作者: 游戏人生    时间: 2006-3-28 05:22
标题: 回复:(tuu602)[求助]如何解决单元格15位数字限制的...
也许是格式与数据有效性方面问题你可以看看是否有自定义的输入格式或数据输入有效性方面是否有限制。

最简单的方法是删除原来产单元格就可以了。
作者: redfox123    时间: 2006-3-29 06:55
最简单的方法是在英文状态下,先输入单引号,再输入数字即可。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3