powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Долго добавляет колонку в таблицу на листе
9 сообщений из 9, страница 1 из 1
Долго добавляет колонку в таблицу на листе
    #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
Долго добавляет колонку в таблицу на листе
    #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
Долго добавляет колонку в таблицу на листе
    #39203026
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Казанскийferzmikk,
столбец можно заполнить одним действием. Столбец из двумерного массива можно выделить функцией ИНДЕКС
Код: vbnet
1.
ThisWorkbook.Sheets("Лист1").Cells(2, 85).resize(23988).value = worksheetfunction.index(Massiv,0,3)


Там должно быть ноль, если массив начинается с индекса 2?
...
Рейтинг: 0 / 0
Долго добавляет колонку в таблицу на листе
    #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
Долго добавляет колонку в таблицу на листе
    #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
Долго добавляет колонку в таблицу на листе
    #39203957
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Казанский,

Спасибо!
...
Рейтинг: 0 / 0
Долго добавляет колонку в таблицу на листе
    #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
Долго добавляет колонку в таблицу на листе
    #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
Долго добавляет колонку в таблицу на листе
    #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
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Долго добавляет колонку в таблицу на листе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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