Если вы программист баз данных, вы можете иногда получать файлы Excel, которые нужно «очистить», чтобы поместить в Access. Две общие проблемы вызваны номерами социального страхования и почтовыми индексами. Их лучше всего хранить в виде текста в базе данных, а не в виде чисел, как это часто бывает в 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), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (11228) применим к Microsoft Excel 2007 и 2010. Вы можете найти версию этого совета для более старого интерфейса меню Excel здесь:

link: / excel-Preparing_Data_for_Import_into_Access [Подготовка данных для импорта в Access].