准备要导入到Access中的数据(Microsoft Excel)
如果您是数据库程序员,则有时可能会获得必须“清理”才能放入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菜单界面中找到本技巧的版本: