Здравствуйте уважаемые форумчане. У меня такой вопрос.
Имеется 2 строки:
1) 79.5.
2) Хандогина Ксения Николаевна 000 0000 000
Таких строк во всём файле неопределенное количество. Их нужно найти и склеить. Я думал организовать поиск по определенному признаку. Только не знаю как это сделать. Число всегда на строку выше текста.
Должно выглядеть так:
1) 79.5.Хандогина Ксения Николаевна 000 0000 000
Заранее большое спасибо.
Нужны два файла-примеры (или можно сделать на двух листах в одном файле):
первый файл-пример - это как файл выглядит изначально;
второй файл-пример - как файл выглядит после работы макроса.
В файле можете оставить небольшое кол-во строк: столько, чтобы можно было сделать макрос.
Структура файлов должна быть реальной, т.к. в дальнейшем вы может быть не сможете самостоятельно изменить макрос под свой реальный файл, т.к. вам может не хватить программистического опыта.
Вот 2 примера.
[вложение удалено администратором]
Напишите, как вы открываете csv-файл в экселе. Есть разные способы и в этих способах разный результат.
Или чтобы не обсуждать csv-файлы, выложите на форуме файлы в эксель-формате.
Если честно, я даже не задумывался о нескольких способах открытия. Я просто двойным кликом по иконке файла и всё. Автоматически в Excel открывается.
[вложение удалено администратором]
Макрос
Sub Макрос1()
Dim rng_empty As Range, ar As Range, lr As Long
'1. Отключение монитора.
Application.ScreenUpdating = False
'2. Vba-именование строк, у которых пусто в столбце F.
lr = Columns("F").Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row
Set rng_empty = Range("F1:F" & lr).SpecialCells(xlCellTypeBlanks).EntireRow
' Цикл по пустым строкам.
For Each ar In rng_empty.Areas
'3. Копирование номера из пустой строки в нижнюю строку.
ar.Cells(2, 1).Value = ar.Cells(1, 1).Value & ar.Cells(2, 1).Value
'4. Удаление пустой строки.
ar.Delete
Next ar
'5. Включение монитора.
Application.ScreenUpdating = True
'6. Сообщение.
MsgBox "Готово.", vbInformation
End Sub
По поводу csv-файлов. Csv-файл в экселе можно открыть тремя способами. И в каждом способе есть свои особенности, влияющие на то, как будет отображаться csv-файл в экселе.
Огромное спасибо. Вы меня спасли. Буду изучать.
У меня возник еще вопрос.
А можно ли сделать исключения?
К примеру, если вначале строки стоит "какая-нибудь буква, а не цифра", то её пропустить и приступить к следующей.
Просто я не подумал, когда скидывал файл. В данной таблице еще присутствуют заголовки. И при проверке столбца F на наличие пустых ячеек, значений он не находит и удаляет заголовки.
Лучше выложите файл-пример, где есть заголовок.
Для написания макроса нужно оставлять в файле столько данных, сколько необходимо для написания макроса.
Прошу прощения. Вот пример с заголовками.
[вложение удалено администратором]
Могу предложить только полуавтоматический макрос. Вы запускаете макрос, появляется диалоговое окно. В этом окне есть поле, где отображаются данные из ячейки столбца A. Вы принимаете решение, нужно подставить номер из этой строки вниз и удалить эту строку или нет. Если да, то щёлкаете кнопку, макрос копирует номер вниз, удаляет строку и переходит к следующей строке, у которой в столбце F пусто.
Полностью сделать автоматически я не знаю, как, т.к. предполагаю, что возможны разные ситуации и все ситуации я не могу предсказать.
Идея очень интересная. Я согласен. Заранее спасибо.
Или такой вариант. Перед запуском макроса, вы проходитесь по всему листу и в пустых строках, которые не надо обрабатывать макросу, в столбце F ставите пробел или какой-нибудь другой символ. Затем запускаете макрос.
Спасибо за помощь, буду использовать второй вариант.