Пишу макросы давно но коряво и с костылями. Все это время выискивал на форумах подходящие куски кода и использовал в своих целях. Но сейчас время поджимает, а в работе с массивами я вообще не силен. Конечно со временем я разберусь, но сейчас всеже прощу натолкнуть в нужное русло ибо понимаю что это элементарно для знающих товарищей
1. Имеем лист где храниться список товара. У каждого товара есть свой уникальный код. 2. При работе макроса получаем массив со значениями продажи (по сути ЧЕК) 3. Нужно вписать в код кусочек который из этого массива arr() поочередно вытащит КОД ТОВАРА - столбец Д(онже 3 столбец двумерного массива) по этому значению произведет поиск на листе "Продажа" и изменит значение в нужной ячейке этого листа...
Код
Sub LogTrans()
Dim arr(), arr1(), arrD(1), lr As Long ' Application.ScreenUpdating = False lr = Cells(Rows.Count, "B").End(xlUp).Row arr() = Range("B12:B" & lr + 1).Value arr1() = Range("F12:K" & lr + 1).Value
Range("A12:K" & lr).ClearContents ' очищаем список Range("C2").Select
Sheets("Log").Select Range("Таблица1[Наименование]").Select Dim nStr As Long 'номер последней заполненой строки nStr = Cells(Rows.Count, 1).End(xlUp).Row lr = lr - 11 Range("B" & nStr + 1 & ":B" & nStr + lr).Value = arr() ' заполняем в ячейки массив название Range("C" & nStr + 1 & ":H" & nStr + lr).Value = arr1() ' заполняем ячейки массив все остальное
volkisreg написал: который из этого массива arr() поочередно вытащит КОД ТОВАРА - столбец Д(онже 3 столбец двумерного массива)
этим кодом: arr() = Range("B12:B" & lr + 1).Value в массив arr вносится ОДИН СТОЛБЕЦ данных, там нет 3-го столбца
Цитата
volkisreg написал: произведет поиск на листе "Продажа" и изменит значение в нужной ячейке
где взять код - не понятно, но даже если каким-то чудесным способом он есть и его удалось найти на листе Продажи, то где находится "эта нужная ячейка", и ЧТО в нее нужно внести - никому неизвестно! переведу вам как я прочитал ваше описание задачи: нужно непонятно где взять код товара, найти его на листе Продажи, потом в непонятно какую ячейку внести непонятно какие изменения каков по-вашему должен быть код этого макроса и чем он вам поможет?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
файл большой, с тем материалом что есть - шансов 0, поэтому смело продолжайте искать куски макросов и приспосабливать их к своему коду самостоятельно удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Необходимо вытащить значение из массива допустим 1 строка столбез 3 и далее кодом типа
Код
'--------------------находим ячейку с номером счета
Cells.Find(What:="Счет №", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
макрос найдет нужную строку на листе "Товар"
Далее я уже сам представляю что и какие манипуляции надо сделать. на листе. Затем надо будет взять следующее значение из массива и повторить все манипуляции...
Вот так получилось. Делает что и требовалось, хоть и коряво написано )
Код
arr() = Range("A" & nStr + 1 & ":H" & nStr + lr).Value 'Забрали в массив значения чека
' регистрируем продажу в базе товара
Sheets("Продажа").Select
For i = LBound(arr) To UBound(arr)
findKOD = arr(i, 4)
'--------------------находим ячейку с товаром
Cells.Find(What:=findKOD, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
col = ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(0, 1).FormulaR1C1 = col + arr(i, 5)
Next i