如果您是数据库程序员,则有时可能会获得必须“清理”才能放入Access的Excel文件。两个常见的问题是由社会安全号码和邮政编码引起的。这些最好以文本形式存储在数据库中,而不是像在Excel中那样通常以数字形式存储。

(在Excel中,数字可能由于单元格格式而正确显示,而不是因为它们是作为文本存储的。)

即使在Excel中将范围格式设置为文本且以前导零开头,Access也会经常将这些值转换为数字。

但是,如果数字前面带有撇号(对于标签),Access将正确地将其导入为文本,而没有前导撇号。

要准备要在Access中导入的社会保险号,可以使用一个快速的小宏,该宏可以确保存在前导零,并且该单元格中存在撇号。要使用该宏,只需选择社会安全号码的范围,然后运行宏:

Sub SSN2Text()

Dim c As Range     Application.ScreenUpdating = False     'Format selected cells as text     Selection.NumberFormat = "@"

For Each c In Selection         If Left(c, 1) = "'" Then             'strip the apostrophe, if any             c = Mid(c, 2, 99)

Else             c = "'" & Right("000000000" & c, 9)

End If     Next c     Application.ScreenUpdating = True End Sub

邮政编码的解决方案本质上是相似的。处理邮政编码的宏将逐步遍历选择中的每个单元,将其格式化为文本,添加前导撇号,并插入任何前导零。区别在于,宏还必须说明存在五位或九位邮政编码的实例。

Sub ZIP2Text()

Dim c As Range     Application.ScreenUpdating = False     'Format selected cells as text     Selection.NumberFormat = "@"

For Each c In Selection         If Left(c, 1) = "'" Then             'strip the apostrophe, if any             c = Mid(c, 2, 99)

End If         If Len(c) <= 5 Then             c = "'" & Right("00000" & c, 5)

Else             c = "'" & Right("00000" & c, 10)

End If     Next c     Application.ScreenUpdating = True End Sub

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11228)适用于Microsoft Excel 2007和2010。您可以在以下旧版Excel菜单界面中找到本技巧的版本: