OpenOffice: отвечаем на вопросы
Как получить инициалы
Уважаемая редакция! Всем предприятием мы перешли на бесплатный OpenOffice, но, как говорится, не обошлось без проблем. Возникла такая задача. Есть база, в определенной колонке которой записаны фамилии, имена и отчества сотрудников (полностью). Нужно получить их фамилии и инициалы, т. е. вместо «Иванов Иван Иванович» написать «Иванов И. И.». Попробовал найти подходящую функцию в Calc, но ничего не получилось. Как быть? Заранее благодарю.
И. Ф. Прохоров, г. Харьков
Отвечает Николай КАРПЕНКО, канд. техн. наук, доцент кафедры прикладной математики и информационных технологий Харьковской национальной академии городского хозяйства
У этой задачи есть, как минимум, два способа решения. Первый — при помощи формул. Второй — с применением инструмента «
Текст по столбцам». Начнем со второго варианта. На мой взгляд, он проще и его легче повторить.Первым делом создадим файл и запишем в него исходные данные, как показано на рис. 1. Для примера я напечатал в ячейку «
A1» текст «Иванов Иван Иванович». Делаем так:1) добавляем справа от колонки с фамилией два столбца. В примере эти столбцы и так пустые, поэтому ничего добавлять не придется. Но в реальной базе без этой операции не обойтись: справа от фамилии наверняка будут находиться другие данные;
2) выделяем колонку с фамилией. В нашем случае это колонка «А»;
3) вызываем меню «Данные → Текст по столбцам…». Появится окно, как на рис. 2 на с. 31;
4) находим группу «Параметры разделителя» и ставим флажок слева от параметра «Пробел»;
5) включаем флажок «Объединить разделители»;
6) нажимаем «ОК». Текст «Иванов Иван Иванович» Calc разделил на три части. В ячейку «B1» он перенес имя «Иван», в ячейку «С1» — отчество «Иванович»;
7) становимся на ячейку «D1»;
8) вводим в нее формулу «=A1&" "&LEFT(B1;1)&"."&LEFT(C1;1)&"." ». В ячейке «D1» появится значение «Иванов И.И.».
Все, что остается сделать, — это скопировать колонку «D» в буфер обмена и затем вставить ее на то же место как значение. После этого колонки «B» и «С» можно удалить.
Пару слов о настройках Мастера текстов программы Calc и о работе формулы.
Флажок возле параметра «Пробел» указывает Calc, какой символ в строке нужно использовать как разделитель. Вы можете выбрать один из пяти стандартных разделителей или воспользоваться вариантом «Другие».
Флажок «Объединить разделители» означает, что несколько подряд идущих символов-разделителей Calc будет воспринимать как один. Мы включили этот параметр на тот случай, если между фамилией, именем и отчеством встретятся несколько пробелов.
Теперь о работе формулы. Функция «LEFT(Строка, Кол)» вырезает из текста «Строка» левые «Кол» символов. Например, если в «B1» записан текст «Иван», то «LEFT(B1;1)» вернет значение «И». Операция «&» служит для объединения нескольких строк в одно целое. Например, формула «=LEFT(B1;1)&”.”)» вернет текст «И.». Ну а логика всей формулы выглядит так: «Берем фамилию из «A1», к ней добавляем пробел (операция «&” “»). К полученному результату добавляем первую букву имени. Результат дополняем символом «.» (точка). Получаем «Иванов И.». Затем выделяем первый символ отчества и присоединяем его к тексту «Иванов И.». И наконец, завершаем текст точкой (операция «&”.“» в конце формулы).
Думаю, что этот пример несложно распространить на случай работы с базой данных. Все, что придется сделать, — это создать формулу и скопировать ее на всю высоту таблицы.
На мой взгляд, описанный прием — самый простой в реализации. Есть и другие варианты решения проблемы. Например, для любителей работать с формулами могу предложить такой вариант. Если в «A1» записан текст «Иванов Иван Иванович», то формула «=MID(A1;1;FIND(" "; A1;1))&MID(MID(A1;FIND(" ";A1;1)+1;LEN(A1));1;1)&"."&MID(MID(MID(A1;FIND(" "; A1;1)+1;LEN(A1));FIND(" ";MID(A1;FIND(" "; A1;1)+1;LEN(A1));1)+1;LEN(MID(A1;FIND(" ";A1;1)+1;LEN(A1))));1;1)&"."» вернет результат «Иванов И.И.». Книгу с этой формулой вы можете хранить в папке с образцами файлов Calc. В любой момент открываете этот файл, копируете формулу, вставляете ее в другой документ и средствами замены исправляете адресацию. Остается только скопировать формулу на всю высоту базы данных. А кто не хочет создавать формулу самостоятельно, может скачать готовый пример с форума редакции: http://bk.factor.ua/forum/viewtopic.php?p=2503#2503.
Удачной работы! Жду ваших вопросов, замечаний и предложений на bk@id.factor.ua, nictomkar@rambler.ru или на форуме редакции www.bk.factor.ua/forum.
Как вычислить квартал по дате
Уважаемая редакция! Подскажите, как в программе Calc определить номер квартала для произвольной даты? Спасибо!
В. П. Ковтун, г. Харьков
Отвечает Николай КАРПЕНКО, канд. техн. наук, доцент кафедры прикладной математики и информационных технологий Харьковской национальной академии городского хозяйства
Для решения этой задачи можно воспользоваться несложной формулой: «
=INT((MONTH(X)+2)/3)», в которой «ХХ» — адрес ячейки с датой для преобразования. Проверим работу формулы на примере. Открываем Calc, создаем таблицу, как показано на рис. 1. В колонку «А» заносим даты. В колонку «B» пишем формулу преобразования. Например, для даты в ячейке «A2» формула преобразования в «B2» выглядит так: «=INT((MONTH(A2)+2)/3)». В этой формуле функция «MONTH(A2)» вычисляет номер месяца для даты в ячейке «A2», а функция «INT ()» округляет результат до целого. Копируем формулу вниз и проверяем для нескольких дат. По-моему, все работает безупречно.
Удачной работы! Жду ваших вопросов, замечаний и предложений на
bk@id.factor.ua, nictomkar@rambler.ru или на форуме редакции www.bk.factor.ua/forum.