879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
1

Вставка формул в ячейки из массива

16.09.2015, 12:04. Показов 4792. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
привет форумчане, такая проблемка:

при вставке в ячейку после копирования, можно выбрать: "вставка формулы", т.е. примерно следущее:

Visual Basic
1
2
3
rngTMP.Cells(1, i).Offset(-offsetTop, 0).Copy
           rngCopy.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
такая конструкция работает отлично и делает то, что мне надо.. только есть одно но.. идет постоянное обращение к ячейкам, и при больших данных это занимает большое количество времени..

может как-то можно с массивами это сделать? если бы это были просто значения, то проблем вообще не было.. я бы мог просто написать что-то типа такого:

Visual Basic
1
2
3
4
5
6
7
8
9
dim arr() as Variant
dim rng as range
 
Set rng = Range("A1:B2")
arr = rng 
 
'Делаю манипуляции с массивом... 
 
rng = arr
такая конструкция работает отлично и быстро, когда речь идет о просто значениях

а как быть с формулами? закинуть формулу в массив не проблема, так же как и присвоить какой-то ячейке эту же формулу, но эксель при копировании формулы автоматом изменяет формулу под саму ячейку, к примеру если формула в ячейке С1 у меня =A1+B1 и ее я копирую в ячейку C2, то формула автоматом становится =A2+B2.

можно как-то такое сделать? или вообще как быть?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2015, 12:04
Ответы с готовыми решениями:

Вставка значений из массива в ячейки листа
Всем привет! У меня есть вопрос. Работаю в EXCEL 2007, являюсь сильно начинающим в вопросах...

Считывание формул из ячейки
Доброго времени суток! Подскажите пожалуйста такой вопрос. Допустим, есть формула x^2 записанная в...

Вставка и удаление строки с сохранением целостности формул
Помогите пожалуйста. У меня такая ситуация: Есть книга из 6 листов. Таблицы на первых 5 листах...

Нужен макрос делающий ввод формул в ячейки
Ребята помогите с макросом который может вводить формулы в определённые для них ячейки,и чтобы...

9
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
16.09.2015, 12:59 2
Лучший ответ Сообщение было отмечено hamin как решение

Решение

hamin, используйте формулы в стиле ссылок R1C1, это свойство тоже образует массив. Например
Visual Basic
1
[c14:e14].FormulaR1C1 = [c5:e5].FormulaR1C1
1
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
16.09.2015, 13:14  [ТС] 3
Казанский,

огромное спасибо, то что нужно!
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
16.09.2015, 13:32 4
Так и при обычном стиле можно взять формулы в массив и выгрузить из массива, вот только формулы массива уже не будут формулами массива... Вот такой каламбур

Добавлено через 2 минуты
Например:
Visual Basic
1
2
3
4
5
Sub tt()
Dim a()
a = [a1:a2].Formula
[d1:d2].Formula = a
End Sub
0
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
16.09.2015, 13:56  [ТС] 5
Hugo121,

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub test()
    
    Dim tmp() As Variant
    
    ReDim Preserve tmp(1)
    tmp(1) = Range("H6").FormulaR1C1
    
    Range("H10:H14") = tmp(1)
    
End Sub
такой вариант работает.. в H6 стоит формула =E6+F6
в ячейках E10:F14 - числа, формулы вставляются правильно
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
16.09.2015, 13:59 6
Цитата Сообщение от hamin Посмотреть сообщение
такой вариант работает
- это не вариант.
А мой вариант почему не проверяли?
0
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
16.09.2015, 14:10  [ТС] 7
Hugo121,

ваш вариант - это первое, что я пробовал еще до того, как написать сюда и это не то, что мне нужно
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
16.09.2015, 14:19 8
Ну тогда ещё раз расскажите что нужно, другими словами - может я не понял?
0
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
16.09.2015, 14:44  [ТС] 9
Hugo121,

ответ я уже получил, но если вы хотите понять что мне нужно было - пожалуйста:

скажем в ячейке А2 и B2 у меня стоят числа 2 и 3 соответственно.
в ячейке C1 у меня есть след. формула: =A1+B1
мне нужно было скопировать эту формулу и вставить в ячейку C2 так, чтобы формула подстроилась под ячейку С2, т.о. формула стала бы =A2+B2 и мне выдала бы сразу ответ 5
т.о. если писать:

Visual Basic
1
2
3
4
5
Sub tt()
Dim a
a = [с1].Formula
[с2].Formula = a
End Sub
у меня в ячейке C2 будет формула =A1+B1

а если написать:
Visual Basic
1
2
3
4
5
Sub tt()
Dim a
a = [с1].FormulaR1C1
[с2] = a
End Sub
то в С2 будет =A2+B2

как-то так
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
16.09.2015, 14:51 10
Понятно. В моём варианте формулы не изменяются при смене диапазона выгрузки, т.е. результат вычислений не меняется.
0
16.09.2015, 14:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2015, 14:51
Помогаю со студенческими работами здесь

Вставка ячейки
Добрый день! Нужен макрос: При вводе данных, на то же место вставляется ячейка со сдвигом...

Вставка множества картинок в ячейки
Здравствуйте, подскажите, пожалуйста. Есть много картинок в .pdf надо перенести их в ячейки Excel....

Поиск строк и вставка данных в их ячейки
Вероятно это очень тривиальная задача, но я в VBA ни бум-бум, поэтому задаю этот вопрос. ...

Вставка в новую строку части ячейки
Здравствуйте, форумчане! Помогите, пожалуйста, решить такую задачу: Есть два текстовых столбца...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru