Страницы: 1
RSS
Обмен значениями у двух элементов массива в Вба Excel.
 
Доброго вечера Всем.
Можно ли осуществить обмен значениями у двух элементов массива в Вба Excel?
Допустим, до обмена:
M(1,1,1-5)=1, 2, 3, 4, 5 (пять элементов)
M(1,2,1-5)=11, 12, 13, 14, 15
после обмена:
M(1,1,1-5)=11, 12, 13, 14, 15
M(1,2,1-5)=1, 2, 3, 4, 5
Как это решить стандартно, с помощью цикла я знаю, но меня интересуют специальные методы-свойства для решения таких задач.
Если не ошибаюсь, в С++ есть функция Swap, а есть ли что-то подобное в Вба Excel?
Спасибо __________ Юрий.
Изменено: Юрий_Нд - 26.10.2019 21:08:07
 
Зачем тут цикл? Что Вы собрались им перебирать? )
Значение одного элемента присваиваем переменной, затем приравниваем два элемента. Затем берём из переменной.
Код
x = Arr(1, 1)
Arr(1, 1) = Arr(1, 2)
Arr(1, 2) = x
 
Спасибо тезка, а какой тип переменной "х"?
Изменено: Юрий_Нд - 26.10.2019 20:04:26
 
Если точно знаете тип данных в массиве, то аналогичный. Но можно и не указывать, если массив разношёрстный.
 
Юрий_Нд, Айяяй
По вопросам из тем форума, личку не читаю.
 
Юрий_Нд, создаёте темы на нескольких форумах - информируйте об этом прямыми ссылками.
 
Юрий, всё-таки что-то не то...
Вы же изменили только один элемент двумерного массива.
А у меня массив трёхмерный, и мне нужно изменить все "третьи" элементы, при двух первых заданных.
То есть всё-таки цикл?
Или всё-таки "Swap"?
_____________________
BMW, Юрий, возможно я очень малоопытный пользователь и что-то нарушил...
Или так поступать нельзя, поясните пожалуйста...
Юрий, ещё я знаю что очень не приветствуется, когда дается ссылка на другой форум...
Изменено: Юрий_Нд - 26.10.2019 20:52:49
 
Цитата
Юрий_Нд написал:
Юрий, ещё я знаю что очень не приветствуется, когда дается ссылка на другой форум..........................И вообще, что я должен был сказать?Что полдня мой вопрос провисел на соседнем форуме и мне не помогли?
На нашем форуме запрета нет. А вот на том, где ещё есть Ваша тема, если я не ошибаюсь, запрет есть.
А сообщить нужно было только то, где ещё разместили свою тему. И всё. Не нужно про "пол-дня просидел"..
 
Я, как Законопослушный гражданин, могу только сказать, извините ещё раз...
А по сути вопроса, всё-таки есть что-то добавить, или всё-таки цикл?
 
Цитата
Юрий_Нд написал:
Вы же изменили только один элемент двумерного массива.
Нет - я заменил два:поменял их местами.
Почему нельзя поступить аналогичным образом с трёхмерным массивом?
 
Цитата
Юрий М написал:
Нет - я заменил два:поменял их местами.
Извините Юрий, возможно я неправильно сформулировала свою просьбу, но мне нужно поменять местами 5 элементов, то есть все третьи элементы.
т.е. M(1,1,1)=1; M(1,1,2)=2; M(1,1,3)=3 и т.д.  
Посмотрите пожалуйста моё первое сообщение.
Изменено: Юрий_Нд - 26.10.2019 21:10:56
 
Юрий_Нд,мне удалось за полчаса (а не полдня) угадать хотелку и дать ответ. Прошу прощения, что не догадался разжевать, что аналога SWAP в VBA нет, хотя в QBasic, например, оно было.
 
Уважаемый Апостроф, ещё раз Спасибо за Помощь, ещё раз Извините, если я Вас чем-то обидел.
Ещё раз спасибо за ответ.
 
Цитата
Юрий_Нд написал:
или всё-таки цикл?
Можно и без цикла, но массив будет выглядеть немного иначе и обращаться к его элементам  нужно примерно так - M(1,2)(5)
Код
Sub rr()
Dim M(1, 2)
M(1, 1) = Array(1, 2, 3, 4, 5)
M(1, 2) = Array(11, 12, 13, 14, 15)
t = M(1, 2)
M(1, 2) = M(1, 1)
M(1, 1) = t
End Sub
 
Ув. Апострофф, Ещё раз спасибо за ответ.
Но скажу честно, как то у меня "не лежит душа к такому решению".
Не обижайтесь.
 
Цитата
Юрий_Нд написал:
Не обижайтесь
На детские капризы грешно обижаться :)  
 
Цитата
Апострофф написал:
На детские капризы грешно обижаться
Возможно Вы правы.
Если бы на этом моя инженерная задача заканчивалось, на это можно было бы "закрыть глаза".
Но ведь мне опять нужно и дальше крутить-вертеть мой массив.
Лучше я уже включу цикл.
И запишу его в одну строчку. Получится "что-то типа моего Swap-а".
Изменено: Юрий_Нд - 26.10.2019 22:07:56
 
Цитата
Юрий_Нд написал:
Лучше я
вот это пожалуйста
Цитата
Юрий_Нд написал:
И запишу его в одну строчку
а вот это не стоит, может выйти боком
 
Цитата
RAN написал:
выйти боком
... интересно, каким боком?
Страницы: 1
Наверх