Left Join в Excell

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Left Join в Excell

pashulka » 10 ноя 2006, 12:51

А в этом никто и не сомневался, именно поэтому все и предлагали Вам использовать формулы.

Pomuk » 10 ноя 2006, 11:56

Да. вы правы. При помощи VBA получается медленнее.
Да я подумал, это и логичней. То ли бэйсик это будет делать, то ли по любому более быстрый язык, на котором написан Excell (если не изменяет память - на С)

Naeel Maqsudov » 01 ноя 2006, 23:37

Просто эта формула в конечном итоге будет в каждой ячейке, и соответственно, пересчитываться будет в каждой ячейке. А что-то мне потсказывает, что если я в VBA посчитаю и вставлю значение в ячейку, то выйдет быстрее.
Уверен, что в Вашем случае будет как раз наоборот.
Если сподобитесь сравнить, то сообщите здесьт результат, если не трудно.

pashulka » 01 ноя 2006, 13:09

Pomuk, Все знают как ввести формулу в ячейку, а вот как заполнить целый диапазон, почему-то нет. Впрочем, если Вы не хотите вводить формулы с последующей заменой их на значения, которые они возвращают (см. ниже), то смотрите здесь ...

Код: Выделить всё

With Worksheets(1).Range("A1:A100")
     .Formula = "=B1+C1"
     .Value = .Value
End With

Pomuk » 01 ноя 2006, 11:53

Да как вставить формулу в диапазон это я знаю. Просто эта формула в конечном итоге будет в каждой ячейке, и соответственно, пересчитываться будет в каждой ячейке. А что-то мне потсказывает, что если я в VBA посчитаю и вставлю значение в ячейку, то выйдет быстрее. Если строк с формулами будет 10 то это конечно не критично. А если уже пару тысяч, то пауза заметна. А если формулы будут в двух ячейках в строке, а не в одной...

pashulka » 31 окт 2006, 18:28

Pomuk, Любую формулу можно ввести сразу в несколько ячеек, для этого достаточно выделить нужный диапазон, ввести нужную формулу и нажать клавиши CTRL+ENTER. Программно же это будет выглядить так :

Код: Выделить всё

Worksheets(1).Range("A1:A100").Formula = "=B1+C1"

Код: Выделить всё

Worksheets(1).Range("A1:A100").FormulaR1C1 = "=RC[1]+RC[2]"

Pavel55 » 31 окт 2006, 18:15

а не надо вставлять в каждую ячейку макросом, вы просто протяните формулу мышкой или средставами VBA (.AutoFill)

Pomuk » 31 окт 2006, 18:07

Даже при помощи записи макроса вытаскивается функция VLOOKUP. Это функция листа Экселя. Если в каждую строку такую функцию вставлять, я думаю слишком долго отчёт будет работать. Нет ли аналогичонй функции в VBA?.

Pavel55 » 31 окт 2006, 16:30

Можно функцией ВПР (смотрите справку Excel) по коду товара

Left Join в Excell

Pomuk » 31 окт 2006, 15:58

Потскажите, может есть стандартный способ решения данной проблемы?
К примеру, есть Таблица1.

# Название Код количество
1 Булка 1001 10
2 Пряник 1002 20
3 Печенье 235 30

И Таблица2

Код Развес
1001 0,5кг
235 0,9кг

Требуется подставить в первую таблицу, значение поля Развес из второй таблицы, если во второй таблице, есть соответствующий код. При помощи SQL (или в Аccess) 10 секунд делов. А вот в Exсell как при помощи макроса подставить данные значения? Ну не пробегаться же по всей второй таблице в поисках при формировании каждой позиции первой таблицы. Просто уверен, что должен существовать стандартный способ.

Вернуться к началу