Wenn Sie ein Datenbankprogrammierer sind, erhalten Sie manchmal Excel-Dateien, die Sie „bereinigen“ müssen, um sie in Access einzufügen. Zwei häufige Probleme werden durch Sozialversicherungsnummern und Postleitzahlen verursacht. Diese werden am besten als Text in der Datenbank gespeichert und nicht als Zahlen, wie sie häufig in Excel vorkommen.

(In Excel werden die Zahlen möglicherweise aufgrund der Zellenformatierung ordnungsgemäß angezeigt und nicht, weil sie als Text gespeichert sind.)

Selbst wenn der Bereich in Excel als Text mit führenden Nullen formatiert ist, konvertiert Access diese Werte häufig in Zahlen.

Wenn der Nummer jedoch ein Apostroph vorangestellt ist, wie bei einem Etikett, importiert Access es korrekt als Text ohne das führende Apostroph.

Um Sozialversicherungsnummern für den Import in Access vorzubereiten, kann ein kurzes kleines Makro nützlich sein – eines, das sicherstellt, dass führende Nullen vorhanden sind und das Apostroph für die Zelle vorhanden ist. Um das Makro zu verwenden, wählen Sie einfach den Bereich der Sozialversicherungsnummern aus und führen Sie das Makro aus:

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

Die Lösung für die Postleitzahlen ist ähnlicher Natur. Das Makro zum Verarbeiten von Postleitzahlen durchläuft jede Zelle in der Auswahl, formatiert sie als Text, fügt einen führenden Apostroph hinzu und fügt alle führenden Nullen ein. Der Unterschied besteht darin, dass das Makro auch Fälle berücksichtigen muss, in denen entweder fünfstellige oder neunstellige Postleitzahlen vorhanden sind.

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

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (2400) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: