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

Вход

Регистрация

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

 

= Мир MS Excel/Как поменять местами две "соседние" строчки таблицы? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как поменять местами две "соседние" строчки таблицы? (Макросы/Sub)
Как поменять местами две "соседние" строчки таблицы?
Юрий_Нд Дата: Суббота, 16.09.2017, 13:48 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Доброго дня форум. Доброго дня специалисты Excel.
Прошу Вашей подсказки,
каким объектом, функцией, процедурой, можно поменять местами две "соседние" строчки таблицы?


Сообщение отредактировал Юрий_Нд - Суббота, 16.09.2017, 13:50
 
Ответить
СообщениеДоброго дня форум. Доброго дня специалисты Excel.
Прошу Вашей подсказки,
каким объектом, функцией, процедурой, можно поменять местами две "соседние" строчки таблицы?

Автор - Юрий_Нд
Дата добавления - 16.09.2017 в 13:48
InExSu Дата: Суббота, 16.09.2017, 15:23 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Привет!
[vba]
Код
Sub test_ПоменятьСтроки()
  Dim НомерВерхнейСтроки As Long
  НомерВерхнейСтроки = 3 'поменять третью с четвертой
  Call ПоменятьСтроки(НомерВерхнейСтроки)
End Sub
Sub ПоменятьСтроки(ByVal НомерВерхнейСтроки As Long)
  Dim НомерНижнейСтроки As Long
  НомерНижнейСтроки = НомерВерхнейСтроки + 1
  Rows(НомерНижнейСтроки & ":" & НомерНижнейСтроки).Cut
  Rows(НомерВерхнейСтроки & ":" & НомерВерхнейСтроки).Insert Shift:=xlDown
End Sub
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
СообщениеПривет!
[vba]
Код
Sub test_ПоменятьСтроки()
  Dim НомерВерхнейСтроки As Long
  НомерВерхнейСтроки = 3 'поменять третью с четвертой
  Call ПоменятьСтроки(НомерВерхнейСтроки)
End Sub
Sub ПоменятьСтроки(ByVal НомерВерхнейСтроки As Long)
  Dim НомерНижнейСтроки As Long
  НомерНижнейСтроки = НомерВерхнейСтроки + 1
  Rows(НомерНижнейСтроки & ":" & НомерНижнейСтроки).Cut
  Rows(НомерВерхнейСтроки & ":" & НомерВерхнейСтроки).Insert Shift:=xlDown
End Sub
[/vba]

Автор - InExSu
Дата добавления - 16.09.2017 в 15:23
Юрий_Нд Дата: Суббота, 16.09.2017, 19:13 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Доброго вечера Уважаемый InExSu, очень извиняюсь, но не могли бы Вы скорректировать программу по изменению любых двух строк конкретной таблицы из приложенного файла. В данном случае прошу поменять местами четвёртую и пятую строки, шифр ресурса 1424-11598 и 200-0001.
Сейчас в таблице 30 строк, но количество строк может быть переменным, поэтому если нужно, программа сама должна определять общее количество строк.
С благодарностью ________________ Юрий.
К сообщению приложен файл: 6964619.xlsm (13.8 Kb)
 
Ответить
СообщениеДоброго вечера Уважаемый InExSu, очень извиняюсь, но не могли бы Вы скорректировать программу по изменению любых двух строк конкретной таблицы из приложенного файла. В данном случае прошу поменять местами четвёртую и пятую строки, шифр ресурса 1424-11598 и 200-0001.
Сейчас в таблице 30 строк, но количество строк может быть переменным, поэтому если нужно, программа сама должна определять общее количество строк.
С благодарностью ________________ Юрий.

Автор - Юрий_Нд
Дата добавления - 16.09.2017 в 19:13
KuklP Дата: Суббота, 16.09.2017, 20:48 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
По двойному щелчку поменяет щелкнутую сроку со следующей. Любую. В модуль листа:
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim tr&, a, r As Range
    tr = Target.Row
    a = Cells(tr, 3).Resize(, 2).Value
    Cells(tr + 1, 3).Resize(, 2).Copy Cells(tr, 3)
    Cells(tr + 1, 3).Resize(, 2).Value = a
    Cancel = True
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПо двойному щелчку поменяет щелкнутую сроку со следующей. Любую. В модуль листа:
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim tr&, a, r As Range
    tr = Target.Row
    a = Cells(tr, 3).Resize(, 2).Value
    Cells(tr + 1, 3).Resize(, 2).Copy Cells(tr, 3)
    Cells(tr + 1, 3).Resize(, 2).Value = a
    Cancel = True
End Sub
[/vba]

Автор - KuklP
Дата добавления - 16.09.2017 в 20:48
InExSu Дата: Суббота, 16.09.2017, 21:15 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Макрос, который я для Вас написал ДублиТретьяКолонкаПустая не справился? Это же его любимая таблица. Натравил этот макрос на Ваш файл, он его легко "причесал".
Задача странная: если известны номера строк для обмена, зачем нам знать сколько их?
1424-11598 - у Вас в таблице их тру штуки.
В общем случае, чтобы поменять местами строки 4 и 5 (соседние). можно (как один из многих способов) запустить из Вашего кода строку
[vba]
Код
Call ПоменятьСтроки(4)
[/vba], неподалёку от кода самого макроса ПоменятьСтроки.
В Вашем случае 4 это 9 (номер строки ячейки, содержащей 1424-11598. Так что [vba]
Код
Call ПоменятьСтроки(9)
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
СообщениеМакрос, который я для Вас написал ДублиТретьяКолонкаПустая не справился? Это же его любимая таблица. Натравил этот макрос на Ваш файл, он его легко "причесал".
Задача странная: если известны номера строк для обмена, зачем нам знать сколько их?
1424-11598 - у Вас в таблице их тру штуки.
В общем случае, чтобы поменять местами строки 4 и 5 (соседние). можно (как один из многих способов) запустить из Вашего кода строку
[vba]
Код
Call ПоменятьСтроки(4)
[/vba], неподалёку от кода самого макроса ПоменятьСтроки.
В Вашем случае 4 это 9 (номер строки ячейки, содержащей 1424-11598. Так что [vba]
Код
Call ПоменятьСтроки(9)
[/vba]

Автор - InExSu
Дата добавления - 16.09.2017 в 21:15
Юрий_Нд Дата: Воскресенье, 17.09.2017, 00:39 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Спасибо что откликнулись InExSu, ваш макрос "ДублиТретьяКолонкаПустая", вот уже почти 8 часов замечательно работает, ещё раз спасибо Вам за это. Но я почти ничего не знаю о том, как же всё-таки он работает. Поэтому вот уже возникла первая проблема.
Мне нужно чуть подвинуть таблицу. На 4 ячейки вправо, и на 1 ячейку вниз, то есть угловая ячейка таблицы из ячейки С4 должна переехать в ячейку G5. Пользуясь случаем хочу спросить Вас, как в этом случае скорректировать макрос?
А эту тему я организовал, когда почти все дружно сказали, что решить мою задачу почти невозможно. Вот тогда я и решил сделать макрос самостоятельно, с помощью пузырькового метода сортировки и логики. Сейчас конечно, после вашего макроса всю мою затею можно назвать только бредом, но желание побольше разобраться в простейших операциях ВБА и в Вашем макросе осталось. Также, пользуясь случаем, хочу попросить Вас оставить побольше комментариев в Вашем, таком замечательном макросе.
Теперь по поводу общего количества строк. Насколько понимаю, для сортировки моей таблицы нужно выделить область или объект Range в который нужно, как я понимаю, внести угловые точки моей таблицы. В противном случае первая строка моей таблицы будет не первой, а шестой, и при изменении нумерация строк будет изменяться значение строк во всех 2 в 24 степени колонок. Именно поэтому я и думал, что как-то нужно задать общее количество строк и столбцов моей таблицы.
KuklP, Я Вам тоже очень благодарен. Если это возможно, сделайте побольше комментариев в Вашем макросе.
 
Ответить
СообщениеСпасибо что откликнулись InExSu, ваш макрос "ДублиТретьяКолонкаПустая", вот уже почти 8 часов замечательно работает, ещё раз спасибо Вам за это. Но я почти ничего не знаю о том, как же всё-таки он работает. Поэтому вот уже возникла первая проблема.
Мне нужно чуть подвинуть таблицу. На 4 ячейки вправо, и на 1 ячейку вниз, то есть угловая ячейка таблицы из ячейки С4 должна переехать в ячейку G5. Пользуясь случаем хочу спросить Вас, как в этом случае скорректировать макрос?
А эту тему я организовал, когда почти все дружно сказали, что решить мою задачу почти невозможно. Вот тогда я и решил сделать макрос самостоятельно, с помощью пузырькового метода сортировки и логики. Сейчас конечно, после вашего макроса всю мою затею можно назвать только бредом, но желание побольше разобраться в простейших операциях ВБА и в Вашем макросе осталось. Также, пользуясь случаем, хочу попросить Вас оставить побольше комментариев в Вашем, таком замечательном макросе.
Теперь по поводу общего количества строк. Насколько понимаю, для сортировки моей таблицы нужно выделить область или объект Range в который нужно, как я понимаю, внести угловые точки моей таблицы. В противном случае первая строка моей таблицы будет не первой, а шестой, и при изменении нумерация строк будет изменяться значение строк во всех 2 в 24 степени колонок. Именно поэтому я и думал, что как-то нужно задать общее количество строк и столбцов моей таблицы.
KuklP, Я Вам тоже очень благодарен. Если это возможно, сделайте побольше комментариев в Вашем макросе.

Автор - Юрий_Нд
Дата добавления - 17.09.2017 в 00:39
InExSu Дата: Воскресенье, 17.09.2017, 09:23 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Цитата Юрий_Нд, 17.09.2017 в 00:39, в сообщении № 6 ()
как же всё-таки он работает

Возвращаемся в тему Как удалить дублирующие элементы таблицы и отсортировать


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
Цитата Юрий_Нд, 17.09.2017 в 00:39, в сообщении № 6 ()
как же всё-таки он работает

Возвращаемся в тему Как удалить дублирующие элементы таблицы и отсортировать

Автор - InExSu
Дата добавления - 17.09.2017 в 09:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как поменять местами две "соседние" строчки таблицы? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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