Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Долго добавляет колонку в таблицу на листе / 9 сообщений из 9, страница 1 из 1
28.03.2016, 12:43
    #39201984
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго добавляет колонку в таблицу на листе
Здравствуйте!

На листе присутствует таблица с подключением с MDX-запросом.

В эту таблицу программно добавляю еще одну колонку
Код: vbnet
1.
2.
3.
4.
5.
ThisWorkbook.Sheets("Лист1").Cells(1, 85) = "Клиент объед."
        
For i = 2 To 23989
    ThisWorkbook.Sheets("Лист1").Cells(i, 85) = Massiv(i, 3)
Next i


Но добавляет значение в дополнительную колонку в такую таблицу очень долго. Больше часа.

Как можно ускорить такой процесс?
...
Рейтинг: 0 / 0
28.03.2016, 16:09
    #39202276
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго добавляет колонку в таблицу на листе
ferzmikk,
столбец можно заполнить одним действием. Столбец из двумерного массива можно выделить функцией ИНДЕКС
Код: vbnet
1.
2.
3.
ThisWorkbook.Sheets("Лист1").Cells(1, 85) = "Клиент объед."
        
ThisWorkbook.Sheets("Лист1").Cells(2, 85).resize(23988).value = worksheetfunction.index(Massiv,0,3)
...
Рейтинг: 0 / 0
29.03.2016, 11:56
    #39203026
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго добавляет колонку в таблицу на листе
Казанскийferzmikk,
столбец можно заполнить одним действием. Столбец из двумерного массива можно выделить функцией ИНДЕКС
Код: vbnet
1.
ThisWorkbook.Sheets("Лист1").Cells(2, 85).resize(23988).value = worksheetfunction.index(Massiv,0,3)


Там должно быть ноль, если массив начинается с индекса 2?
...
Рейтинг: 0 / 0
29.03.2016, 14:17
    #39203220
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго добавляет колонку в таблицу на листе
Казанскийferzmikk,
Код: vbnet
1.
ThisWorkbook.Sheets("Лист1").Cells(2, 85).resize(23988).value = worksheetfunction.index(Massiv,0,3)


Возможно добавить сразу два столбца соответственно из Massiv(i,3) и Massiv(i,4)?
...
Рейтинг: 0 / 0
29.03.2016, 21:05
    #39203652
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго добавляет колонку в таблицу на листе
ferzmikk,
добавьте один столбец, потом другой. Это все ж не 24 тысячи раз к листу обращаться.
Код: vbnet
1.
2.
ThisWorkbook.Sheets("Лист1").Cells(2, 85).resize(23988).value = worksheetfunction.index(Massiv,0,3)
ThisWorkbook.Sheets("Лист1").Cells(2, 86).resize(23988).value = worksheetfunction.index(Massiv,0,4)

В принципе, можно и одним действием, но вряд ли это будет быстрее:
Код: vbnet
1.
2.
3.
With WorksheetFunction
  ThisWorkbook.Sheets("Лист1").Cells(2, 85).resize(23988,2).value = .Transpose(Array(.Transpose(.Index(Massiv, 0, 3)), .Transpose(.Index(Massiv, 0, 4))))
End With
...
Рейтинг: 0 / 0
30.03.2016, 11:41
    #39203957
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго добавляет колонку в таблицу на листе
Казанский,

Спасибо!
...
Рейтинг: 0 / 0
29.06.2016, 14:12
    #39264686
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго добавляет колонку в таблицу на листе
Код: vbnet
1.
2.
ThisWorkbook.Sheets("Лист1").Cells(2, 1).resize(23988).value = worksheetfunction.index(Massiv,0,3)
ThisWorkbook.Sheets("Лист1").Cells(2, 2).resize(23988).value = worksheetfunction.index(Massiv,0,4)


Нужно вставить колонку с формулой типа
Код: vbnet
1.
ThisWorkbook.Sheets("Лист1").Cells(2, 3).FormulaLocal="=A2+B2"


Как это сделать?

Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
04.07.2016, 09:07
    #39267106
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго добавляет колонку в таблицу на листе
Код: sql
1.
2.
3.
For i = 2 to 23989
    ThisWorkbook.Sheets("Лист1").Cells(i, 3).FormulaLocal=     "=A" & i & "+B" & i
Next i


Как можно одной строкой без использования For вставить формулы для строк и при этом были видны формулы в ячейке?
...
Рейтинг: 0 / 0
05.07.2016, 08:21
    #39267755
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго добавляет колонку в таблицу на листе
Вместо
Код: vbnet
1.
2.
3.
For i = НачальнаяСтрока to КонечнаяСтрока
    ThisWorkbook.Sheets("Лист1").Cells(i, КолонкаВывода).FormulaLocal=     "=A" & i & "+B" & i
Next i


Удалось написать так
Код: vbnet
1.
2.
3.
4.
5.
6.
ПерваяКолонка = 1
ВтораяКолонка = 2
КолонкаВывода = 3

Thisworkbook.sheets(“Лист1”).Range(Cells(НачальнаяСтрока, Колонка Вывода), Cells(КонечнаяСтрока, КолокаВывода)).FormulaR1C1 = _
        "=RC[" & (ПерваяКолонка – КолонкаВывода) & "] +" & "RC[" & (ВтораяКолонка – КолонкаВывода&"]"


Из за RC приходиться писать в формуле разность (напр. ПерваяКолонка – КолонкаВывода) и тут только суммируются две ячейки. А если писать более сложную формулу, например, с применением функции ЕСЛИ, ВПР, то такая запись будет намного длиннее и запутаннее. Возможно как нибудь по другому написать более оптимально? Учитывая, что количество строк много и по строкам добавлять долго.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Долго добавляет колонку в таблицу на листе / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]