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

Вход

Регистрация

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

 

= Мир MS Excel/команда обмена значений двух выделенных ячеек - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
команда обмена значений двух выделенных ячеек
vitalife Дата: Среда, 28.01.2015, 13:02 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 57
Репутация: 0 ±
Замечаний: 60% ±

Excel 2010
Здравствуйте,
Подскажите, есть ли команда или сочетание быстрых клавиш для обмена значений двух выделенных ячеек. Т.Е. выделяешь 2 ячейки, нажимаешь горячую клавишу и ВОУЛЯ - значения автоматически обмениваются местами.
 
Ответить
СообщениеЗдравствуйте,
Подскажите, есть ли команда или сочетание быстрых клавиш для обмена значений двух выделенных ячеек. Т.Е. выделяешь 2 ячейки, нажимаешь горячую клавишу и ВОУЛЯ - значения автоматически обмениваются местами.

Автор - vitalife
Дата добавления - 28.01.2015 в 13:02
DJ_Marker_MC Дата: Среда, 28.01.2015, 13:03 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Доброго дня.
Думаю без макроса никак не выйдет.
 
Ответить
СообщениеДоброго дня.
Думаю без макроса никак не выйдет.

Автор - DJ_Marker_MC
Дата добавления - 28.01.2015 в 13:03
vitalife Дата: Среда, 28.01.2015, 13:08 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 57
Репутация: 0 ±
Замечаний: 60% ±

Excel 2010
Как создать такой макрос? Где можно почитать, подскажите, пожалуйста?
 
Ответить
СообщениеКак создать такой макрос? Где можно почитать, подскажите, пожалуйста?

Автор - vitalife
Дата добавления - 28.01.2015 в 13:08
DJ_Marker_MC Дата: Среда, 28.01.2015, 13:14 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
vitalife, стало интересно решил накидать на скорую руку.

[vba]
Код
Sub ttt()
If Selection.Count <> 2 Then End
For Each cell In Selection
     q = q + 1
     If q = 1 Then
         a = cell
         aa = cell.Address
     Else
         b = cell
         bb = cell.Address
     End If
Next

Range(aa) = b
Range(bb) = a

End Sub
[/vba]

Выделяете ДВА любых значения и нажимаете кнопку ОБМЕН
К сообщению приложен файл: obmen.xlsm (17.8 Kb)
 
Ответить
Сообщениеvitalife, стало интересно решил накидать на скорую руку.

[vba]
Код
Sub ttt()
If Selection.Count <> 2 Then End
For Each cell In Selection
     q = q + 1
     If q = 1 Then
         a = cell
         aa = cell.Address
     Else
         b = cell
         bb = cell.Address
     End If
Next

Range(aa) = b
Range(bb) = a

End Sub
[/vba]

Выделяете ДВА любых значения и нажимаете кнопку ОБМЕН

Автор - DJ_Marker_MC
Дата добавления - 28.01.2015 в 13:14
Rioran Дата: Среда, 28.01.2015, 13:40 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
DJ_Marker_MC, хорошее решение. Меня почему-то по чуть более сложному пути понесло =) Что-то я зациклился на массивах.

[vba]
Код
Sub Rio_Exch()

'Author:    Roman "Rioran" Voronov
'Date:      the 28-th of January, 2015
'Feedback:  voronov_rv@mail.ru

'If you select two different cells - this code will swap their values.

Dim ArrX
Dim StrA As String
Dim StrB As String
Dim ValA As Variant
Dim ValB As Variant

If Selection.Cells.Count <> 2 Then Exit Sub

If InStr(1, Selection.Address, ",") Then
     ArrX = Split(Selection.Address, ",")
Else
     ArrX = Split(Selection.Address, ":")
End If

StrA = ArrX(0): StrB = ArrX(1)
ValA = Range(StrA).Value
ValB = Range(StrB).Value
Range(StrA).Value = ValB
Range(StrB).Value = ValA

End Sub
[/vba]
К сообщению приложен файл: Rio_Exchange.xlsb (15.6 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеDJ_Marker_MC, хорошее решение. Меня почему-то по чуть более сложному пути понесло =) Что-то я зациклился на массивах.

[vba]
Код
Sub Rio_Exch()

'Author:    Roman "Rioran" Voronov
'Date:      the 28-th of January, 2015
'Feedback:  voronov_rv@mail.ru

'If you select two different cells - this code will swap their values.

Dim ArrX
Dim StrA As String
Dim StrB As String
Dim ValA As Variant
Dim ValB As Variant

If Selection.Cells.Count <> 2 Then Exit Sub

If InStr(1, Selection.Address, ",") Then
     ArrX = Split(Selection.Address, ",")
Else
     ArrX = Split(Selection.Address, ":")
End If

StrA = ArrX(0): StrB = ArrX(1)
ValA = Range(StrA).Value
ValB = Range(StrB).Value
Range(StrA).Value = ValB
Range(StrB).Value = ValA

End Sub
[/vba]

Автор - Rioran
Дата добавления - 28.01.2015 в 13:40
vitalife Дата: Среда, 28.01.2015, 14:11 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 57
Репутация: 0 ±
Замечаний: 60% ±

Excel 2010
Спасибо большое, DJ_Marker_MC! Получилось встроить ваш макрос!!!!
Благодарю DJ_Marker_MC, Rioran
 
Ответить
СообщениеСпасибо большое, DJ_Marker_MC! Получилось встроить ваш макрос!!!!
Благодарю DJ_Marker_MC, Rioran

Автор - vitalife
Дата добавления - 28.01.2015 в 14:11
vitalife Дата: Среда, 28.01.2015, 14:20 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 57
Репутация: 0 ±
Замечаний: 60% ±

Excel 2010
Только почему-то при закрытии и открытии макрос перестает работать - пропадает. Как его сохранить навсегда?
 
Ответить
СообщениеТолько почему-то при закрытии и открытии макрос перестает работать - пропадает. Как его сохранить навсегда?

Автор - vitalife
Дата добавления - 28.01.2015 в 14:20
vitalife Дата: Среда, 28.01.2015, 14:20 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 57
Репутация: 0 ±
Замечаний: 60% ±

Excel 2010
Только почему-то при закрытии и открытии Документа Excel макрос перестает работать - пропадает. Как его сохранить навсегда?


Сообщение отредактировал vitalife - Среда, 28.01.2015, 14:20
 
Ответить
СообщениеТолько почему-то при закрытии и открытии Документа Excel макрос перестает работать - пропадает. Как его сохранить навсегда?

Автор - vitalife
Дата добавления - 28.01.2015 в 14:20
Rioran Дата: Среда, 28.01.2015, 14:23 | Сообщение № 9
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
vitalife, загуглите "личная книга макросов" и "добавление макроса на панель быстрого доступа".


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеvitalife, загуглите "личная книга макросов" и "добавление макроса на панель быстрого доступа".

Автор - Rioran
Дата добавления - 28.01.2015 в 14:23
vikttur Дата: Среда, 28.01.2015, 14:44 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Если ячейки рядом в строке:
[vba]
Код
Sub TransposValue()
Dim vValue
     With Selection
         If .Count <> 2 Then End
         vValue = .Cells(1, 1).Value
         .Cells(1, 1).Value = .Cells(1, 2).Value
         .Cells(1, 2).Value = vValue
     End With
End Sub
[/vba]


Сообщение отредактировал vikttur - Среда, 28.01.2015, 14:44
 
Ответить
СообщениеЕсли ячейки рядом в строке:
[vba]
Код
Sub TransposValue()
Dim vValue
     With Selection
         If .Count <> 2 Then End
         vValue = .Cells(1, 1).Value
         .Cells(1, 1).Value = .Cells(1, 2).Value
         .Cells(1, 2).Value = vValue
     End With
End Sub
[/vba]

Автор - vikttur
Дата добавления - 28.01.2015 в 14:44
_Boroda_ Дата: Среда, 28.01.2015, 15:00 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 16901
Репутация: 6613 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Еще вариант.
[vba]
Код
Sub tt()
     If Selection.Count <> 2 Then Exit Sub
     ad_ = Selection.Address(0, 0)
     ad1_ = Mid(ad_, 1, WorksheetFunction.Search(",", ad_) - 1)
     ad2_ = Mid(ad_, WorksheetFunction.Search(",", ad_) + 1, 99)
     a_ = Range(ad1_)
     Range(ad1_) = Range(ad2_)
     Range(ad2_) = a_
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант.
[vba]
Код
Sub tt()
     If Selection.Count <> 2 Then Exit Sub
     ad_ = Selection.Address(0, 0)
     ad1_ = Mid(ad_, 1, WorksheetFunction.Search(",", ad_) - 1)
     ad2_ = Mid(ad_, WorksheetFunction.Search(",", ad_) + 1, 99)
     a_ = Range(ad1_)
     Range(ad1_) = Range(ad2_)
     Range(ad2_) = a_
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 28.01.2015 в 15:00
  • Страница 1 из 1
  • 1
Поиск:

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