1

У меня есть файл CSV с контактами внутри, который я хочу импортировать в онлайн-список контактов.

К сожалению, файл CSV содержит один столбец для полного имени и не различает столбцы "Имя" и "Фамилия", которые мне нужны. Мне было интересно, была ли функция Excel для разделения (или любое другое предложение, учитывая, что я являюсь разработчиком на C #, но я не знаю сценариев Excel VB).

Хорошей новостью является то, что столбец "Полное имя" действительно всегда начинается с Фамилии в верхнем регистре, за которой следует имя в случае верблюда, причем фамилия может содержать апостроф, а имя и фамилия могут содержать несколько слов , Вот несколько примеров:

1) LASTNAME Firsname; Other data; ... 

2) LASTNAME LASTNAME Firsname; Other data; ... 

3) LASTNAME' LASTNAME Firsname; Other data; ... 

4) LASTNAME' LASTNAME LASTNAME Firsname Firstname; Other data; ... 

Который мне нужно преобразовать в:

1) Lastname; Firsname; Other data; ... 

2) Lastname Lastname; Firsname; Other data; ... 

3) Lastname' Lastname; Firsname; Other data; ... 

4) Lastname' Lastname Lastname; Firsname Firstname; Other data; ...

Спасибо за помощь.

1 ответ1

0

Я предполагаю, что вы импортировали файл CSV, а список имен находится в столбце А.

Эта формула создает "вспомогательный" столбец, содержащий позицию последней буквы имени:

=MATCH(1,(CODE(MID(A2,ROW(A$1:A$50),1))>96)*(CODE(MID(A2,ROW(A$1:A$50),1))<123),0)-3

Это формула массива, и ее нужно вводить с помощью CTRL Shift Enter, а не просто Enter. Если введено правильно, формула будет заключена в фигурные скобки в строке формул. Эта формула была заполнена с B2 в таблице ниже.

Как это работает: MID() создает массив всех букв в имени (до 50 букв). ROW() используется для генерации списка чисел от 1 до 50. Итак, если любое из ваших имен может быть длиннее 50 символов, тогда вам следует увеличить термин A$50 мере необходимости.

CODE() преобразует массив букв в их ASCII-коды. Сравнения >96 и <123 проверяют наличие строчных букв ASCII, а при преобразовании массивов в значения True/False с True для любой строчной буквы.

Умножение выполняет эквивалент логического AND() и преобразует значения True/False в 1 и 0. Наконец, MATCH() находит позицию первой 1 в этом массиве, которая является позицией первой строчной буквы в имени. Вычитание 3 идентифицирует последнюю букву имени.

Теперь, используя вспомогательный столбец, фамилии могут быть перечислены в столбце C с помощью:

=PROPER(LEFT(A2,B2))

Это берет часть заглавных букв столбца A и преобразует ее в то, что Excel называет "правильным" случаем, который, по-видимому, совпадает с "верблюжьим" делом.

Первые имена перечислены в столбце D с:

=RIGHT(A2,LEN(A2)-B2-1)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .