Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сравнить несколько столбцов и результат скопировать в другой файл. Не могу найти ошибку. / 5 сообщений из 5, страница 1 из 1
19.07.2012, 11:13
    #37884995
kois
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить несколько столбцов и результат скопировать в другой файл. Не могу найти ошибку.
День добрый

Не получилось переделать макрос для следующего задания:

Нужно таблицу состоящей из 4-х столбцов из файла №1 - первый наименование, 3 других числовые, сравнить с другим файлом №2, и в случае совпадения наименования и 2 других столбцов скопировать в файл №2 содержимое 3-го столбца с цифрами.

Никто не может подсказать, в чем тут ошибка?

Option Explicit

Sub Test1()
Const DataRange = "A:E"
Dim Arr1(), Arr2(), Arr3(), Arr4(), r&, c&, rs&, ds&, cs&, rs1&, ds1&, cs1&, i&, r1&, c1&

Arr1() = Intersect(ActiveSheet.UsedRange, Range(DataRange)).Value
rs = UBound(Arr1, 3)
cs = UBound(Arr1, 4)
ds = UBound(Arr1, 5)
ReDim Arr2(1 To rs, 1 To 1)
Windows("ëèñò2").Activate
rs1 = UBound(Arr3, 3)
cs1 = UBound(Arr3, 4)
ds1 = UBound(Arr1, 5)
ReDim Arr4(1 To rs, 1 To 1)
Windows("ëèñò1").Activate
For c = 1 To cs Step 3
For r = 1 To rs
If Arr1(r, c + 2) = Cells(r1, c1 + 2) Then
If Arr1(r, c + 3) = Cells(r1, c1 + 3) Then
If Arr1(r, c + 4) = Cells(r1, c1 + 4) Then
i = i + 1
Arr2(i, 1) = Arr1(r, c + 2)

End If
End If
End If
Next
Next
ReDim Arr1(0)
If i > 0 Then
If i > Rows.Count Then MsgBox "Íàéäåíî: " & i, 16, "!": Exit Sub
On Error Resume Next
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("Result").Delete
With Sheets.Add
.Name = "Result"
Range("F1").Resize(i).Value = Arr2()
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End If
End Sub
...
Рейтинг: 0 / 0
19.07.2012, 11:26
    #37885019
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить несколько столбцов и результат скопировать в другой файл. Не могу найти ошибку.
Код: vbnet
1.
2.
3.
rs = UBound(Arr1, 3)
cs = UBound(Arr1, 4)
ds = UBound(Arr1, 5)

Массив Arr1 - двумерный, существует только UBound(Arr1, 1) и UBound(Arr1, 2)

Приложенный файл - это №1 или №2? Где другой?
...
Рейтинг: 0 / 0
19.07.2012, 11:28
    #37885023
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить несколько столбцов и результат скопировать в другой файл. Не могу найти ошибку.
Вообще это делается функцией ВПР. Бэз циклов :)
...
Рейтинг: 0 / 0
20.07.2012, 15:18
    #37887192
kois
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить несколько столбцов и результат скопировать в другой файл. Не могу найти ошибку.
Казанский,

Приложенный файл - это №1 или №2? Где другой?
№1-й. Второй представляюет такой же файл, просто с перемешанными названиями и без 4-го стобца(F в примере 1-го файла).


Казанский\
Вообще это делается функцией ВПР. Бэз циклов :)


К сожалению, мне нужно чтобы перенос работал с условием что совпадают все три значения - и только в этом случае копировать 4-е. ВПР же на попытку сделать именно так отвечает - слишком много аргументов.
...
Рейтинг: 0 / 0
20.07.2012, 16:09
    #37887284
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить несколько столбцов и результат скопировать в другой файл. Не могу найти ошибку.
С ВПР можно, если в таблице, откуда подтягиваются данные, создать доп. столбец типа =A1&A2&A3, а в качестве искомого значения тоже использовать выражение A1&A2&A3. Числа лучше соединять через какой-нибудь символ, чтобы избежать ошибочных совпадений, например =A1&"|"&A2&"|"&A3
Но можно и без доп. столбца, если использовать комбинацию ИНДЕКС+ПОИСКПОЗ. См. в файле пример подтягивания данных с Лист1 на Лист2 одной формулой массива, введенной в столбец.
Поскольку формула вводится один раз, нет необходимости использовать абсолютную адресацию Лист1.
Чтобы показать, что формула действительно ищет по 3-м значениям, отсортировал Лист2!A1:C18 по убыванию и изменил некоторые значения.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сравнить несколько столбцов и результат скопировать в другой файл. Не могу найти ошибку. / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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