データベースプログラマーの場合、Accessに配置するために「クリーンアップ」する必要のあるExcelファイルを取得することがあります。 2つの一般的な問題は、社会保障番号と郵便番号によって引き起こされます。これらは、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

郵便番号の解決策は本質的に似ています。郵便番号を処理するマクロは、選択範囲の各セルをステップスルーし、テキストとしてフォーマットし、先頭にアポストロフィを追加し、先頭にゼロを挿入します。違いは、マクロは5桁または9桁の郵便番号がある場合も考慮する必要があることです。

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_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11228)は、Microsoft Excel 2007および2010に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。