Excel——身份证相关

这篇博客介绍了如何使用Excel公式计算身份证对应的年龄和性别,并详细讲解了如何验证和计算身份证的校验码,包括15位和18位身份证的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以A1单元格的身份证为例,处理各种小需求

 

身份证计算年龄(15位、18位)
=IFERROR(
    IF(
        LEN(A1)=15,
        DATEDIF(DATE(MID(A1,7,2)+1900,MID(A1,9,2),MID(A1,11,2)),TODAY(),"y"),
        IF(
            (LEN(A1)=17)+(LEN(A1)=18)>0,
            DATEDIF(DATE(MID(A1,7,4),MID(A1,11,2),MID(A1,13,2)),TODAY(),"y"),
            DAY(x)
        )
    )&"岁", 
    "身份证格式错误"
)


身份证计算性别(15位、18位)
=IFERROR(
    CHOOSE(
        MOD(
            IF(
                LEN(A1)=15,
                MID(A1, 15, 1),
                IF(
                    (LEN(A1)=17)+(LEN(A1)=18)>0,
                    MID(A1, 17, 1),
                    DAY(x)
                )
            ),
            2
        )+1,
        "女", "男"
    ), 
    "身份证格式错误"
)

计算身份证校验码
=IF(
    (LEN(A1)=17)+(LEN(A1)=18)>0,
    CHOOSE(
        MOD(
            7 * MID(A1, 1, 1) +
            9 * MID(A1, 2, 1) +
            10 * MID(A1, 3, 1) +
            5 * MID(A1, 4, 1) +
            8 * MID(A1, 5, 1) +
            4 * MID(A1, 6, 1) +
            2 * MID(A1, 7, 1) +
            1 * MID(A1, 8, 1) +
            6 * MID(A1, 9, 1) +
            3 * MID(A1, 10, 1) +
            7 * MID(A1, 11, 1) +
            9 * MID(A1, 12, 1) +
            10 * MID(A1, 13, 1) +
            5 * MID(A1, 14, 1) +
            8 * MID(A1, 15, 1) +
            4 * MID(A1, 16, 1) +
            2 * MID(A1, 17, 1),
       

### Delphi 导出 Excel 时处理身份证号码过长问题 当使用 Delphi 将数据导出到 Excel 文件时,如果遇到身份证号码等较长字符串被错误识别为数值并显示科学计数法的情况,可以采取以下方法来确保这些字段作为文本正确保存。 #### 方法一:设置单元格格式为文本 在写入任何数据之前,先将目标列的单元格格式设为文本。这可以通过 `Excel.Application` 对象完成: ```delphi uses ComObj; var ExcelApp, Workbook, Sheet: Variant; begin ExcelApp := CreateOleObject('Excel.Application'); try Workbook := ExcelApp.Workbooks.Add; Sheet := Workbook.Sheets[1]; // 设置特定列为文本格式 Sheet.Columns['A:A'].NumberFormat := '@'; // 写入身份证号至 A 列 Sheet.Cells[1, 1].Value := '123456789012345678'; ExcelApp.Visible := True; except on E: Exception do ShowMessage(E.Message); end; end; ``` 此代码片段通过指定 `Columns['A:A']` 的 `NumberFormat` 属性为 `'@'` 来强制该列中的所有条目都按照纯文本方式存储[^1]。 #### 方法二:前缀单引号 另一种简单的方法是在向 Excel 单元格赋值时,在身份证号码前面加上一个不可见字符——通常是单引号 (`'`)。这样可以让 Excel 自动将其视为文本而不是数字: ```delphi Sheet.Cells[rowIndex, colIndex].Formula := '''' + IDCardNoString; ``` 这种方法不需要改变整个工作表或列的数据类型设定;只需每次插入新记录时应用即可[^2]。 这两种策略都能有效防止 Excel 错误解析大整型编号串,并保持原始输入形式不变。选择哪种取决于具体应用场景和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值