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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2011, 09:45   #1
semen083
 
Регистрация: 24.03.2011
Сообщений: 7
Вопрос Переделать макрос

Добрый день уважаемые программисты! У меня при выполнении курсача возник следующий вопрос. Существует матрица, размерность и элементы которой задаются пользователем. Задача минимум -найти обратную матрицу. Я хочу использовать функцию MInverse. Т.Е.
Sheets("Лист1").Range("G12:K16").Se lect
Selection.FormulaArray = "=MINVERSE(R[-9]C:R[-5]C[4])"
Вопрос собсна- как переделать макрос так чтобы вместо ссылок R1C1
использовались зависимые значения, например s и k.
P.S.
Пробовал вариант типа
Selection.FormulaArray = "=MINVERSE("G" & CStr(s - k + 2) & ":" & "K" & CStr(s - k + 2))". Но что то нифига не пашет. Пишет типа синтаксическая ошибка или ожидается окончание выражения, в зависимости от того с каким настроением Excel проснулся сегодня.Заранее спасибо за ответ!
semen083 вне форума Ответить с цитированием
Старый 24.03.2011, 09:56   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Код:
Selection.FormulaArray = "=MINVERSE(G" & (s - k + 2) & ":K" & (s - k + 2) & ")"
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.03.2011, 00:52   #3
semen083
 
Регистрация: 24.03.2011
Сообщений: 7
По умолчанию

Спасибо большое за ответ, но я столкнулся с очередным косяком- хотел перевести и столбцы в динамическую форму по аналогии что то типа
Selection.FormulaArray = "=MINVERSE(" & (s - k + 2) & "&" & (s - k - 2) & ":" & (s - k + 2) & "&" & s & ")"
где s-k+2=7,
s=11, своего рода G3:K7, перевел в формат R1C1, но при выделения захвата формулы выдается то, что захватывается все столбцы Матрица.jpg
semen083 вне форума Ответить с цитированием
Старый 28.03.2011, 01:11   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

один из способов обращения к диапазону
Range(cells(r1,c1), cells(r2,c2))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.03.2011, 17:54   #5
semen083
 
Регистрация: 24.03.2011
Сообщений: 7
По умолчанию

Да хотелось бы добить тему в том формате, который указал предыдущий прогер, удобнее намного- сразу к диапазону обращаещься. Ну а если в область строки
Selection.FormulaArray = "=MINVERSE(" & (s - k - 2) & "&" & (s - k + 2) & ":" & (s - k + 2) & "&" & s & ")" . На изменения в красной области не реагирует никак хоть +100 ставь, хоть -500
semen083 вне форума Ответить с цитированием
Старый 29.03.2011, 17:57   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Ну а где же Range и Cells?
Сейчас формула при
s = 20
k = 10
получается типа
=MINVERSE(8&12:12&20)
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.03.2011 в 18:05.
Hugo121 вне форума Ответить с цитированием
Старый 29.03.2011, 18:05   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

когда указываете диапазон в стиле А1, например "G11:N25" i=11, j=25 тогда аналогичный диапазон можно записать так: "G" & i & ":N" & j. строки с числами собираем в строку.
видите буковки присутствуют, а где они у Вас:
(" & (s - k - 2) & "&" & (s - k + 2) & ":" & (s - k + 2) & "&" & s & ")"
пишите, как Вам удобно, только пишите правильно.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 01.04.2011, 23:37   #8
semen083
 
Регистрация: 24.03.2011
Сообщений: 7
По умолчанию

Я возможно некорректно выразился. Постараюсь все разложить по полочкам и обосновать ход своей мысли. Мне надо осуществить несколько операций с матрицами(умножение, отыскание обратной), заранее неизвестной размерности, но не в этом суть. Как написал уважаемый Hugo121
Selection.FormulaArray = "=MINVERSE(G" & (s - k + 2) & ":K" & (s - k + 2) & ")". Я думал что получится переделать столбцы по аналогии со строками (ну ессно в формате R1C1), типа чтобы было вида например (1,1) мол 1-я строка, 1-й столбец. Вот и заменил первые буквы на такие же выражения как и в столбцах-типа (s - k + 2). Excel ошибку не выдает, все нормально но вот такая фигня выходит что выделяет все столбцы. Ну а стиль такой использовать решил, потому что как описал выше предвидется много операций с матрицами и я хотел бы их через вот эти встроенные функции выполнять(minverse и другие). На ваш суд
semen083 вне форума Ответить с цитированием
Старый 02.04.2011, 11:39   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Изучайте:
Код:
Sub tt()

s = 20
k = 10
g_ = 7
k_ = 11
Selection.Formula = "test"
Debug.Print "=MINVERSE(G" & (s - k + 2) & ":K" & (s - k + 2) & ")"
Selection.FormulaArray = "=MINVERSE(G" & (s - k + 2) & ":K" & (s - k + 2) & ")"
Debug.Print "=MINVERSE(" & Cells(s - k + 2, g_).Address(0, 0) & ":" & Cells(s - k + 2, k_).Address(0, 0) & ")"
Selection.FormulaArray = "=MINVERSE(" & Cells(s - k + 2, g_).Address(0, 0) & ":" & Cells(s - k + 2, k_).Address(0, 0) & ")"

End Sub
Попробуйте написать Address(1, 0) или Address(0, 1).

Ещё - если при выполнении кода активным является другой лист - нужно явно указать, чьи это Cells.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 02.04.2011 в 11:46.
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переделать макрос копировать из других книг(Excel 2003) vfv Microsoft Office Excel 2 18.01.2011 15:22
Переделать макрос экселя под аксесс staniiislav Microsoft Office Excel 5 10.12.2010 10:16
Нужно переделать макрос под меня ganebal Microsoft Office Excel 0 22.11.2010 19:52
Переделать макрос. Дмитрий Фукс Microsoft Office Excel 6 12.05.2010 09:10
Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос as-is Microsoft Office Excel 4 25.02.2010 07:51