Сравнение фамилий

Следующий шаг - сравнение фамилий, находящихся в базе данных сотрудников и в списке с окладами. Однако в базе данных указаны фамилия, имя и отчество, а в штатном расписании - лишь фамилия и инициалы. По этой причине при сравнении будем принимать во внимание только фамилии сотрудников. Чтобы обеспечить такую возможность, мы можем:

Первый путь нас не устраивает, поэтому воспользуемся специальными текстовыми функциями Excel. С помощью этих функций мы должны:

Для определения количества символов, предшествующих первому пробелу, можно применить текстовую функцию НАЙТИ. Синтаксис ее следующий:

НАЙТИ(искомый_текст;просматриваемый_текст;нач_позиция)

где искомый_текст - текст, который мы ищем, просматриваемый_текст - текст, содержащий искомый текст, нач_позиция - позиция, с которой следует начинать поиск.

Данная функция находит вхождение одной текстовой строки (искомый_текст) в другую (просматриваемый_текст) и начальное положение искомого текста относительно крайнего левого символа просматриваемого текста.

Первый символ в аргументе просматриваемый_текст имеет номер 1. Если аргумент нач_позиция опущен, то он считается равным 1.

Вызвав панель функции НАЙТИ (рис. 5.19), в поле Найти_текст введите с клавиатуры пробел. В поле Внутр_текст введите ссылку на ячейку С2, а третий аргумент оставьте незаполненным. В ячейке Р2 появится следующая формула:

=НАЙТИ (" ";С2)
Панель функции НАЙТИ
Рис. 5.19. Панель функции НАЙТИ

Применив далее функцию ЛЕВСИМВ

=ЛЕВСИМВ(С2;Р2-1)

вы получите в ячейке Q2 фамилию из ячейки С2, но без инициалов. (Панель функции ЛЕВСИМВ приведена в главе 4, на рис. 4.4.)

Первым аргументом функции ЛЕВСИМВ является адрес ячейки, где расположена фамилия с инициалами. Вторым аргументом должно быть число символов, из которого состоит фамилия. Поэтому, если определено положение пробела, следующего после фамилии, то число символов фамилии будет равно номеру позиции этого пробела минус 1. Таким образом, во втором аргументе функции ЛЕВСИМВ из значения ячейки Р2, определенного функцией НАЙТИ, следует вычесть значение 1.

Теперь, используя функцию ЕСЛИ, в ячейке R2 можно сравнить фамилию, находящуюся в базе данных сотрудников, и фамилию из списка с окладами, полученную в результате обработки.

В ячейке R2 должна использоваться такая формула:

=ЕСЛИ(Н2=Q2;ИСТИНА;ЛОЖЬ)

Если фамилии в обоих списках совпадут, то в ячейке R11 появится значение ИСТИНА, если не совпадут - значение ЛОЖЬ.

Чтобы определить, выполняются ли псе три условия, применим логическую функцию И. Функция возвращает значение ИСТИНА, если все аргументы имеют значение ИСТИНА, и значение ЛОЖЬ, если хотя бы один из аргументов имеет значение ЛОЖЬ. Синтаксис функции таков:

И(логическое_значение1; логическое_значение2; ...)

где логическое_значение 1, логическое_значение2, ... - это проверяемые условия (их может быть от 1 до 30), которые имеют либо значение ИСТИНА, либо значение ЛОЖЬ.

Аргументы функции должны быть логическими значениями, массивами или ссылками, содержащими логические значения.

В нашем случае результаты сравнений находятся в ячейках N2, О2 и R2. Вызвав панель функции И (рис. 5.20), введите в качестве ее аргументов ссылки на эти ячейки. В ячейке S2 появится новая формула:

=И(N2;O2;R2)
Панель функции И
Pис 5.20. Панель функции И

При наличии трех значений ИСТИНА, а такое возможно лишь при условии, что, во-первых, работник не уволился, во-вторых, табельные номера соответствуют друг другу, а в-третьих, фамилии в соответствующих строках одинаковы, функция И возвратит значение ИСТИНА. Если хотя бы одно условие не выполняется и имеет значение ЛОЖЬ, то и формула возвращает значение ЛОЖЬ. На рис. 5.21 фрагмент рабочего листа Оклады показан с результатами сравнения таблиц, а на рис. 5.22 - с введенными формулами.

Результат сравнения соответствия двух рассматриваемых таблиц
Рис. 5.21. Результат сравнения соответствия двух рассматриваемых таблиц
Рабочий лист с формулами для определения соответствия двух таблиц
Рис. 5.22. Рабочий лист с формулами для определения соответствия двух таблиц