Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

WinCity.Ru _ Microsoft/Office Excel _ Разделение столбца

Автор: karimen Вторник, 27 Мая 2008, 10:50

Задача следующего плана. Есть столбик таблицы в котором содержатся ячейки приблизительно следующего содержания:
"Лейтес Н.С. Возрастная одаренность школьников. учеб. пособие"
Нужно из этого столбика сделать 2, в первом написать "Лейтес Н.С.", во втором "Возрастная одаренность школьников. учеб. пособие" при этом длина столбцов разная, что естественно и длина фамилий соответственно тоже разная.

Я сам по себе можно сказать начинающий программист и если бы у меня был текстовый файл с подобными строками я бы смог его разделить, но с экселем из программы работать пока не научился потому пойти этим путем не могу, есть ли в екселе подобная возможность?

Автор: pashulka Среда, 04 Июня 2008, 12:21

Если Вы хотите написать программу только для того, чтобы разделить данные, то в таком случае, вполне можно обойтись обычными формулами :

A1 - Лейтес Н.С. Возрастная одаренность школьников. учеб. Пособие

B1 =ПСТР(A1;1;ПОИСК(". ";A1))
B1 =ПСТР(A1;1;НАЙТИ(". ";A1))

C1 =ПСТР(A1;ПОИСК(". ";A1)+2;32000)
С1 =ПОДСТАВИТЬ(A1;B1&" ";"")

После того, как формулы станут не нужны, их можно заменить на результат, которые они возвращают. Осуществить это можно, например, так :
- выделите диапазон, содержащий формулы
- в меню Правка выберите команду Копировать (CTRL+C)
- затем, всё в том же меню Правка выберите команду Специальная вставка
- в появившемся стандартном диалоговом окне установите переключатель напротив Значения и кликните кнопку OK.

Если же использование макросов обязательно, то и в этом случае можно воспользоваться формулами, только программно, но можно и помучить строковые функции VB, например InStr, Mid

Код
iText = "Лейтес Н.С. Возрастная одаренность школьников. учеб. Пособие"

iPosition = InStr(iText, ". ")
If iPosition = 0 Then
  MsgBox "Не самый удачный критерий разделения ФИО и названия книги"
Else
  iAuthor = Mid(iText, 1, iPosition): MsgBox "Автор : " & iAuthor, , ""
  iBook = Mid(iText, iPosition + 2):  MsgBox "Книга : " & iBook, , ""
  'Функция MsgBox используется только для наглядности
End If


P.S. Если какая-либо часть ответа требует более тщательного освещения, то разговор всегда можно продолжить …

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)