Страницы: 1
RSS
Начало вставки данных словарём.
 
   Здравствуйте. Вставляю данные макросом, но они встают на 3 ячейки ниже. Лишь один регулятор нашёл вместо F4 поставить F1, но тогда у меня попадает на заголовок таблицу. Подскажите пожалуйста, где подставить -3, чтобы данные  оказались на своём месте? Всё перепробовал "тыком", везде ошибку выдаёт.
Код
 b = Sheets(6).UsedRange.Value ' таблица, в которой ищем
    With CreateObject("Scripting.Dictionary")
        For ix = 1 To UBound(b)  ' последняя строка исх.таблицы
            .Item(b(ix, 1)) = ix ' заносим в словарь код
        Next
        aa = Sheets(1).UsedRange.Columns(16).Value ' диапазон, который ищем
        ReDim c(1 To UBound(aa), 1 To 1) ' создаём размер итоговой таблицы
        For ix = 1 To UBound(aa)
            If .exists(aa(ix, 1)) Then
                ii = .Item(aa(ix, 1))
                c(ix, 1) = b(ii, 3)
            End If
        Next
    End With
    Sheets(1).[F4].Resize(ix) = c()
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Думаю беда в том, что UsedRange не начинается с первой строки листа, поэтому и сдвиг..
Вообще без примера трудно подсказать оптимально, непонятно что за
Цитата
Владимир написал: попадает на заголовок таблицу.
Я обычно стараюсь не привязываться к UsedRange (разве что когда ищу пересечение областей), а беру диапазон от первой строки листа по найденной последней в столбце. Потому что UsedRange может быть и на весь лист, но не с первой строки.
Изменено: Hugo - 11.06.2015 19:14:49
 
Игорь, спасибо.
Привязался к .CurrentRegion и всё встало на место.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
Страницы: 1
Наверх