132 / 15 / 2
Регистрация: 27.11.2013
Сообщений: 509
1

Перенести значения из одного массива в другой

10.07.2018, 14:07. Показов 2669. Ответов 2
Метки нет (Все метки)

Есть две таблицы в двух листах. Нужно из первой таблицы перенести значения последнего столбца во вторую таблицу по условию времени и даты (пример прилагается), т.е. из столбца 7 листа 1 в столбец 6 листа 2. Я написал вот так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ThisWorkbook.Sheets("Лист1").Activate
 
Dim x As Long, i As Long
i = ActiveSheet.Range("C65536").End(xlUp).Row
 
Dim rnD As Range, rnTime As Range, rnVol As Range
Set rnD = Sheets("RRP").Range(Cells(2, 3), Cells(i, 3)) 'äàòà
Set rnTime = Sheets("RRP").Range(Cells(2, 4), Cells(i, 4)) 'âðåìÿ
Set rnVol = Sheets("RRP").Range(Cells(2, 9), Cells(i, 9)) 'îáúåì
 
Dim arrVol(1 To i, 1 To 1)
 
Sheets("Лист2").Activate
Dim arrSP()
arrSP = Range(Cells(2, 1), Cells(ActiveSheet.Range("A65536").End(xlUp).Row, 6))
 
For x = 1 To UBound(arrSP1, 1)
    arrSP(x, 6) = WorksheetFunction.SumIfs(rnVol, rnD, arrSP(x, 3), rnTime, arrSP(x, 4))
Next x
проблема в том, что базы данных очень большие и макрос выполняется долго. Есть ли какие другие варианты решения данной задачи? Можно ли эту задачу решить с применением массивов, исключая диапазоны - они тормозят и жрут много памяти.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2018, 14:07
Ответы с готовыми решениями:

Как перенести значения ячеек с интервалом с одного листа на другой?
нужно копировать значения ячеек,выделенных зеленым цветом в столбце В. 8, 57, 106, ... (с...

Как перенести значения из одного компонента одной формы в другой компонент другой формы?
В общем ситуация смешная для профи,делаю программу для редактирования и печати вкладышей для...

Данные, соответствующие определённым значениям, перенести с одного листа на другой, на аналогичные значения
Задача такая: есть два файла xls. В Первом (исходном) файле: есть номера статей (допустим, от 1 до...

Из одного массива сделать два массива, в один перенести четные элементы, в другой нечетные
Здравствуйте , помогите пожалуйста с такой задачей из одного массива сделать два массива, в один...

2
132 / 15 / 2
Регистрация: 27.11.2013
Сообщений: 509
10.07.2018, 14:16  [ТС] 2
файл забыл загрузить
Вложения
Тип файла: xlsx Книга1.xlsx (45.1 Кб, 11 просмотров)
0
4 / 4 / 1
Регистрация: 15.05.2017
Сообщений: 50
10.07.2018, 15:44 3
Лучший ответ Сообщение было отмечено shavka как решение

Решение

Добрый день! Вот решение для Вас (макрос не мой, решение от HUGO) просто под Вашу задачу подпилил немного:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Gen()
    Dim a(), b(), i&, ii&
 
    With CreateObject("scripting.dictionary")
        a = Sheets(1).[a1].CurrentRegion.Value
            For i = 2 To UBound(a)
                .Item(a(i, 1) & a(i, 2)) = i
            Next
        b = Sheets(2).[a1].CurrentRegion.Value
        For i = 2 To UBound(b)
            If .exists(b(i, 3) & b(i, 4)) Then
            ii = .Item(b(i, 3) & b(i, 4))
            b(i, 6) = a(ii, 7)
            End If
        Next
        Sheets(2).[a1].CurrentRegion.Value = b
    End With
 
End Sub
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2018, 15:44
Помогаю со студенческими работами здесь

Как перенести элементы из одного массива в другой?
как перенести элементы из одного массива в другой ? пример: 5, 6, 7, 8 ,9 хочу перенести только...

Как перенести элемент одного массива в другой?!
Помогите плиз! Нужно перенести элемент массива с четными индексом из одного массива в другой......

Перенести все кратные 5 элементы из одного массива в другой
Преподаватель говорит что код не правильный и функция, считающая количество элементов кратная 5 не...

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


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

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

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