Другие языки программирования и технологии
VB. Макросы в MS Exel.
MS Exel 20xx. Проблема следующая. Имеется очень длинный список в один столбец, состоящий из предложений. Следовательно, значения строки: текст. Допустим, это три слова. Например: ___________________ Мама мыла раму ___________________ Папа драил пол ___________________ Лиса жевала колобка ___________________ и так далее. Задача следующая: нужно из этой одной ячейки, где три слова, разнести на три ячейки, чтобы каждое слово было в отдельной ячейке. Макрос VB6.5 ___________________ Мама | мыла | раму | ___________________ Визуализация. :) Посидел, поломал голову, полазил по форумам - ничего. Не силен в VB, но, мне кажется, что макрос написать вполне реально. Поэтому прошу помощи у вас.
Колобка стало жалко, решил вмешаться )
постарался сделать макрос универсальным, поэтому перед началом работы нужно нажать на первую ячейку с записями, чтобы определиться со столбцом. сигнал завершения работы - пустая ячейка в вабраном столбце. Знаком разделителя считаем только пробел, знаки препинания не учитываются
Sub kolobka()
Dim mass() As String
y = ActiveCell.Column
x = ActiveCell.Row
Do While Cells(x, y) <> ""
mass() = Split(Cells(x, y).Text, " ")
n = UBound(mass())
For i = 0 To n
Cells(x, y + i + 1) = mass(i)'если нужно затирать начальную строку, то +1надо убрать
Next
ReDim mass(0)
x = x + 1
Loop
End Sub
постарался сделать макрос универсальным, поэтому перед началом работы нужно нажать на первую ячейку с записями, чтобы определиться со столбцом. сигнал завершения работы - пустая ячейка в вабраном столбце. Знаком разделителя считаем только пробел, знаки препинания не учитываются
Sub kolobka()
Dim mass() As String
y = ActiveCell.Column
x = ActiveCell.Row
Do While Cells(x, y) <> ""
mass() = Split(Cells(x, y).Text, " ")
n = UBound(mass())
For i = 0 To n
Cells(x, y + i + 1) = mass(i)'если нужно затирать начальную строку, то +1надо убрать
Next
ReDim mass(0)
x = x + 1
Loop
End Sub
Господа, а зачем изобретать велосипед? !
2003
Меню: Данные=>Текст по столбцам=>Разделитель: пробел
2003
Меню: Данные=>Текст по столбцам=>Разделитель: пробел
Юрий Хаматов
Хах. Вот такого я и не знал.
А функциями листа не сгодится?
Н27 = Мама мыла раму
K27 =ЛЕВСИМВ (H27; ПОИСК (" ";H27))
L27 =ПСТР (H27; ПОИСК (" ";H27)+1; ПОИСК (" "; H27; ПОИСК (" "; H27)+1) - ПОИСК (" ";H27))
M27 =ПСТР (H27; ПОИСК (" "; H27; ПОИСК (" "; H27)+1)+1; ДЛСТР (H27)-ПОИСК (" "; H27; ПОИСК (" "; H27)+1)+1)
В результате:
К27 = Мама
L27 = мыла
М27 = раму
Н27 = Мама мыла раму
K27 =ЛЕВСИМВ (H27; ПОИСК (" ";H27))
L27 =ПСТР (H27; ПОИСК (" ";H27)+1; ПОИСК (" "; H27; ПОИСК (" "; H27)+1) - ПОИСК (" ";H27))
M27 =ПСТР (H27; ПОИСК (" "; H27; ПОИСК (" "; H27)+1)+1; ДЛСТР (H27)-ПОИСК (" "; H27; ПОИСК (" "; H27)+1)+1)
В результате:
К27 = Мама
L27 = мыла
М27 = раму
Юрий Хаматов
Не то. Но смысл правильный. Я просто не знаю, как это прописать в VB.
Если между словами по одному пробелу, то можно с помощью instr() определить позицию первого пробела, а затем вырезать с помощью trim() часть предложения от первого символа до пробела и поместить ее в нужную ячейку, затем находим аналогично позицию второго пробела и т. д.
Юрий Хаматов
А если в виде кода? Я сам просто буду часов 10 писать, так как очень слаб в VB. Если Вам не сложно, конечно.
Похожие вопросы
- Вопрос по макросам MS Excel
- Excel. Макрос. Найти в Листе1 значение активной ячейки из Листа2.
- Помогите с макросами в Word 2007
- Как написать макрос для Word 2003 чтобы выполнял сортировку чисел в квадратных скобках?
- ЗАЩИТА СЕКРЕТНОГО ФАЙЛА EXEL
- Необходимо создать макрос для excel
- Помоги запустить макрос в OpenOffice
- Подскажите строчку в макросах Ексель
- EXEL-3.0 Как из одного столба данных исключить значения другого столбца обычному пользователю?
- Макрос для excel - VBA (гиперссылка)
Я б Вас поцеловал, были б Вы рядом. Но не буду. Хехе.
Спасибо, тезка, огромное. Ставка на колобка сработала. ;))