Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос объединяющий строки, кроме определенных столбцов. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос объединяющий строки, кроме определенных столбцов. (Формулы/Formulas)
Макрос объединяющий строки, кроме определенных столбцов.
reader22 Дата: Четверг, 09.02.2017, 12:06 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день.
Прошу помощи с решением задачки. Написание макросов для меня задача совершенно новая.
Необходимо объединять ячейки построчно, если в 1й колонке совпадают порядковые номера. Объединять оставляя значения 1й строки. Кроме трёх столбцов. А именно:

Выработка (закрыто часов по нарядам), нормо-час
Номер заказа
Текст заказа
(Они выделены желтым в файле примера)
С помощью гугла я написал макрос. Он работает. Но не умеет исключать эти три столбца. Для меня тут сложность в том, что количество столбцов в документе может меняться. Т.е. местоположение этих 3х столбцов, которые надо оставить без изменения - не фиксированное. Возможно меня кто-то натолкнет на мысль как это реализовать, доработав мой макрос.
Как должны выглядеть эти столбцы можно посмотреть на приложенной картинке.

Заранее спасибо.
К сообщению приложен файл: Merge_rows.xls (50.0 Kb) · 9294641.jpg (40.0 Kb)
 
Ответить
СообщениеДобрый день.
Прошу помощи с решением задачки. Написание макросов для меня задача совершенно новая.
Необходимо объединять ячейки построчно, если в 1й колонке совпадают порядковые номера. Объединять оставляя значения 1й строки. Кроме трёх столбцов. А именно:

Выработка (закрыто часов по нарядам), нормо-час
Номер заказа
Текст заказа
(Они выделены желтым в файле примера)
С помощью гугла я написал макрос. Он работает. Но не умеет исключать эти три столбца. Для меня тут сложность в том, что количество столбцов в документе может меняться. Т.е. местоположение этих 3х столбцов, которые надо оставить без изменения - не фиксированное. Возможно меня кто-то натолкнет на мысль как это реализовать, доработав мой макрос.
Как должны выглядеть эти столбцы можно посмотреть на приложенной картинке.

Заранее спасибо.

Автор - reader22
Дата добавления - 09.02.2017 в 12:06
Фомулист Дата: Четверг, 09.02.2017, 12:22 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 397
Репутация: 9 ±
Замечаний: 80% ±

Excel 2003
Если вопрос по макросы, то тему надо было создавать в "Вопросы по VBA".


Терпение и труд всё перетрут!
 
Ответить
СообщениеЕсли вопрос по макросы, то тему надо было создавать в "Вопросы по VBA".

Автор - Фомулист
Дата добавления - 09.02.2017 в 12:22
Wasilich Дата: Четверг, 09.02.2017, 13:00 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Может сделать проверку по шапке
[vba]
Код
If Cells(2, c) <> "Выработка (закрыто часов по нарядам), нормо-час" and Cells(2, c) <> "Номер заказа" And Cells(2, c) <> "Текст заказа" Then
Range(Cells(a, c), Cells(b, c)).Merge
End if
[/vba]


Сообщение отредактировал Wasilich - Четверг, 09.02.2017, 13:55
 
Ответить
СообщениеМожет сделать проверку по шапке
[vba]
Код
If Cells(2, c) <> "Выработка (закрыто часов по нарядам), нормо-час" and Cells(2, c) <> "Номер заказа" And Cells(2, c) <> "Текст заказа" Then
Range(Cells(a, c), Cells(b, c)).Merge
End if
[/vba]

Автор - Wasilich
Дата добавления - 09.02.2017 в 13:00
reader22 Дата: Четверг, 09.02.2017, 13:09 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Может сделать проверку по шапке
If Cells(2, c) <> "Выработка (закрыто часов по нарядам), нормо-час " and Cells(2, c) <> "Номер заказа " And Cells(2, c) <> "Текст заказа" Then
Range(Cells(a, c), Cells(b, c)).Merge
End if

Да, что-то вроде этого я пробовал. Но если значение ячейки текст, то не работает. Т.е. он не понимает именно текстовое значение. Если ради эксперимента озаглавить столбец числами, то такое простое добавление условия замечательно подходит.
 
Ответить
Сообщение
Может сделать проверку по шапке
If Cells(2, c) <> "Выработка (закрыто часов по нарядам), нормо-час " and Cells(2, c) <> "Номер заказа " And Cells(2, c) <> "Текст заказа" Then
Range(Cells(a, c), Cells(b, c)).Merge
End if

Да, что-то вроде этого я пробовал. Но если значение ячейки текст, то не работает. Т.е. он не понимает именно текстовое значение. Если ради эксперимента озаглавить столбец числами, то такое простое добавление условия замечательно подходит.

Автор - reader22
Дата добавления - 09.02.2017 в 13:09
reader22 Дата: Четверг, 09.02.2017, 13:17 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Т.е. другими словами. Вот такой код работает отлично и делает то, что мне нужно, если исключаемые столбцы названы 2, 3 и 4 соответственно.
[vba]
Код
Sub tt()
Dim Rng As Range: Set Rng = Selection
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim a&, b&, c&, lr&, lr2&
Application.ScreenUpdating = False
lr = Range("A1").CurrentRegion.Rows.Count
lr2 = Range("A1").CurrentRegion.Columns.Count

For a = 5 To lr
For b = lr To a + 1 Step -1

For c = lr2 To 1 Step -1

If Len(Cells(a, 1)) Then
If Cells(a, "A") = Cells(b, "A") Then

If Cells(2, c) <> "2" And Cells(2, c) <> "3" And Cells(2, c) <> "4" Then
Range(Cells(a, c), Cells(b, c)).Merge

End If
End If

End If
Next c

Next b

Next a
Application.ScreenUpdating = True

End Sub
[/vba]

А вот как его заставить понимать текст?


Сообщение отредактировал reader22 - Четверг, 09.02.2017, 13:53
 
Ответить
СообщениеТ.е. другими словами. Вот такой код работает отлично и делает то, что мне нужно, если исключаемые столбцы названы 2, 3 и 4 соответственно.
[vba]
Код
Sub tt()
Dim Rng As Range: Set Rng = Selection
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim a&, b&, c&, lr&, lr2&
Application.ScreenUpdating = False
lr = Range("A1").CurrentRegion.Rows.Count
lr2 = Range("A1").CurrentRegion.Columns.Count

For a = 5 To lr
For b = lr To a + 1 Step -1

For c = lr2 To 1 Step -1

If Len(Cells(a, 1)) Then
If Cells(a, "A") = Cells(b, "A") Then

If Cells(2, c) <> "2" And Cells(2, c) <> "3" And Cells(2, c) <> "4" Then
Range(Cells(a, c), Cells(b, c)).Merge

End If
End If

End If
Next c

Next b

Next a
Application.ScreenUpdating = True

End Sub
[/vba]

А вот как его заставить понимать текст?

Автор - reader22
Дата добавления - 09.02.2017 в 13:17
Wasilich Дата: Четверг, 09.02.2017, 13:24 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Оформите тегами код в своём сообщении - Выделите его и нажмите #.


Сообщение отредактировал Wasilich - Четверг, 09.02.2017, 13:35
 
Ответить
СообщениеОформите тегами код в своём сообщении - Выделите его и нажмите #.

Автор - Wasilich
Дата добавления - 09.02.2017 в 13:24
Wasilich Дата: Четверг, 09.02.2017, 13:59 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
если значение ячейки текст, то не работает. Т.е. он не понимает именно текстовое значение
Глупости! Просто текст в шапке не совпадает с текстом в коде.
Попробуйте так
[vba]
Код
  If Trim(Cells(2, c)) <> "Выработка (закрыто часов по нарядам), нормо-час" And Trim(Cells(2, c)) <> "Номер заказа" And Trim(Cells(2, c)) <> "Текст заказа" Then
                  Range(Cells(a, c), Cells(b, c)).Merge
  End If
[/vba]
 
Ответить
Сообщение
если значение ячейки текст, то не работает. Т.е. он не понимает именно текстовое значение
Глупости! Просто текст в шапке не совпадает с текстом в коде.
Попробуйте так
[vba]
Код
  If Trim(Cells(2, c)) <> "Выработка (закрыто часов по нарядам), нормо-час" And Trim(Cells(2, c)) <> "Номер заказа" And Trim(Cells(2, c)) <> "Текст заказа" Then
                  Range(Cells(a, c), Cells(b, c)).Merge
  End If
[/vba]

Автор - Wasilich
Дата добавления - 09.02.2017 в 13:59
reader22 Дата: Четверг, 09.02.2017, 14:16 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Глупости! Просто текст в шапке не совпадает с текстом в коде.
Попробуйте так


Текст вставлял копипастом, не работало, но вот предложенный вами Trim действительно исправил ситуацию.
Вопрос исчерпан, большое спасибо за помощь.
 
Ответить
Сообщение
Глупости! Просто текст в шапке не совпадает с текстом в коде.
Попробуйте так


Текст вставлял копипастом, не работало, но вот предложенный вами Trim действительно исправил ситуацию.
Вопрос исчерпан, большое спасибо за помощь.

Автор - reader22
Дата добавления - 09.02.2017 в 14:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос объединяющий строки, кроме определенных столбцов. (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!