Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2014, 20:21   #1
Арианна
Пользователь
 
Регистрация: 11.03.2012
Сообщений: 25
По умолчанию Столбцы в обратном порядке

Здравствуйте. Вот, есть у меня такое зданьице: Дана матрица A2:F10(9x6) , состоящая из целых чисел.Написать макрос, формирующий матрицу в ячейках I2:N10 из заданной путём перестановки столбцов первого с последним, второго с предпоследним и т.д (столбцы в обратном порядке).Исходная матрица должна содержать одинаковые значения в одном столбце. Над матрицами должны быть надписи: Исходная матрица, результирующая матрица. Исходная матрица должна содержать одинаковые значения в одном столбце. Макрос должен вызываться кнопкой с надписью Расчёт. Выполнить нужно через разные виды циклов.
Начала писать For Next, но что-то он не работает... Причем не находит никаких ошибок, а просто не считает. Подскажите, пожалуйста, в чем дело.

Sub Расчет()
Dim col, j, a, rw As Integer
rw = 2
a = 13
For col = 1 To 10
j = col + a
Worksheets("Лист1").Range(Cells(2, j), Cells(6, j)).Value = Worksheets("Лист1").Range(Cells(2, col), Cells(6, col))
a = a - 1
Next col
End Sub
Арианна вне форума Ответить с цитированием
Старый 15.01.2014, 21:16   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Писал на коленке,должно работать
Код:
Function REVERS(X As Variant) As Variant
    Dim r As Integer, c As Integer, Y As Variant
    r = UBound(X, 1)
    c = UBound(X, 2)
    ReDim Y(1 To r, 1 To c)
    For n = 1 To r
        For m = 1 To c
            Y(n, m) = X(n, c - m + 1)
        Next
    Next
    REVERS = Y
End Function
Sub Start()
    r = 9
    c = 6
    ReDim X(1 To r, 1 To c)
    For n = 1 To r
        For m = 1 To c
            X(n, m) = m
        Next
    Next
    Y = REVERS(X)
    Range("A2").Resize(9, 6) = X
    Range("I2").Resize(9, 6) = Y

End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 15.01.2014, 21:51   #3
Арианна
Пользователь
 
Регистрация: 11.03.2012
Сообщений: 25
По умолчанию

А без функции никак не обойтись?
Арианна вне форума Ответить с цитированием
Старый 15.01.2014, 22:08   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Можно,объедините обе процедуры в одну
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 15.01.2014, 22:17   #5
Арианна
Пользователь
 
Регистрация: 11.03.2012
Сообщений: 25
По умолчанию

Просто, может есть варианты попроще? На основе этого цикла мне еще три таких делать...
Арианна вне форума Ответить с цитированием
Старый 16.01.2014, 06:05   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно существенно проще:
Код:
Sub Revers()
    Dim i As Integer, a(): a = [A2:F10].Value
    For i = 1 To UBound(a, 2)
        Cells(2, 15 - i).Resize(UBound(a, 1)).Value = Application.Index(a, 0, i)
    Next
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cи последовательность слов в обратном порядке Konsyello Помощь студентам 1 16.12.2013 19:13
Переставить в обратном порядке столбцы mimit Помощь студентам 1 30.11.2012 00:06
программка на С++,буквы в обратном порядке iris_ka Помощь студентам 9 02.03.2012 20:03
Вывести числа в обратном порядке asmcc Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 20.02.2010 11:46
В обратном порядке mari.ha Общие вопросы C/C++ 7 25.12.2008 21:36