Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2011, 10:49   #1
Hoochara
Пользователь
 
Регистрация: 02.08.2011
Сообщений: 42
По умолчанию Не могу найти ошибка в коде массива.

Доброе утро уважаемые форумчане.

Подскажите где ошибка в коде:

Цитата:
Sub Transfer()
Dim t!: t = Timer

Dim sell As Worksheet, ost As Worksheet, x, y, z, i&, temp$

ActiveWorkbook.RefreshAll

Set baza = Sheets("baza")
Set svod = Sheets("svod")

With baza
x = .Range(.Range("a2"), .Cells(Rows.Count, "a").End(xlUp).Offset(, 2)).Value
End With

With svod
y = .Range(.Range("a2"), .Cells(Rows.Count, "a").End(xlUp).Offset(, 1)).Value
ReDim z(1 To UBound(y), 1 To 2)

With CreateObject("Scripting.dictionary" )
.CompareMode = 1

For i = 2 To UBound(x)
temp = x(i, 1)
.Item(temp) = i
Next

For i = 1 To UBound(y)

temp = y(i, 1)
If .exists(temp) Then
z(i, 1) = x(.Item(temp), 1)
End If

Next i

End With

.[h2].Resize(UBound(z), 2) = z

End With

Debug.Print "Dictionary: " & Timer - t


MsgBox "Ìèêêè Ìàóñ"

End Sub
Макрос набирает значения из двух страниц. Потом вставляет данные из 2 столбца листа baza в лист svod на 8 столбец, а Должен вставлять на второй. Где ошибка не пойму.

Спасибо!
Вложения
Тип файла: rar all_LG_Форма_для_проверки.rar (178.1 Кб, 13 просмотров)
Hoochara вне форума Ответить с цитированием
Старый 05.09.2011, 10:53   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если нужно во второй, то
.[b2].Resize(UBound(z), 2) = z
Но в массиве z первый столбец пустой, поэтому в B будет пусто.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.09.2011, 11:20   #3
Hoochara
Пользователь
 
Регистрация: 02.08.2011
Сообщений: 42
По умолчанию

Во поправил всё заработало, спасибо хуго.

Слушай а можно ли в код проверки добавить несколько критериев. К примеру. идет сравнение LCD тел-р LG 32LD320=
Если такое значение есть то данные переносятся на другой лист.
А как добавить к поиску что если он такую модель не нашел, то не идет на следующую строчку, а берёт эту же модель для сравнения, но например уже без знака =, потом без (тел-р). потом без пробелов. и светит цветом её, либо же копирует данные в соседний столбец. а если не нашел ни по каким критериям то берёт Полное название.
Hoochara вне форума Ответить с цитированием
Старый 05.09.2011, 11:32   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Тогда нужно весь код менять.
В этом варианте вариантов нет - или нашёл в словаре или не нашёл.
Единственное - класть в словарь без мусора, и искать в словаре без мусора.

Хотя... можно через ЕСЛИ НЕ НАШЁЛ искать replace(temp, "=","") или trim(temp)...

Что-то вроде
Код:
            For i = 1 To UBound(y)

                temp = y(i, 1)
                If .exists(temp) Then
                    z(i, 2) = x(.Item(temp), 1)
                    Else
                    If .exists(Replace(temp, "=", "")) Then
                    z(i, 2) = x(.Item(Replace(temp, "=", "")), 1)
                    Else
                    If .exists(Trim(temp)) Then
                    z(i, 2) = x(.Item(Trim(temp)), 1)
                    End If
                    End If
                End If

            Next i
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 05.09.2011 в 11:38.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, строки. Не могу найти ошибку в коде. Liam_ Помощь студентам 6 11.05.2011 19:29
Не могу найти ошибку в коде написанном на FASM Devil21RUS Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 12.12.2010 04:52
ошибка в коде. не могу найти Giffon Общие вопросы C/C++ 3 30.11.2009 15:24
не могу найти ошибку в коде pavelstraut Общие вопросы C/C++ 5 24.07.2009 23:20
Не могу найти ошибку в коде! Natasha666 Помощь студентам 1 20.05.2009 09:27