Страницы: 1
RSS
VBA: Взять значение из массива, по этому значению произвести поиск на листе
 
Пишу макросы давно но коряво и с костылями. Все это время выискивал на форумах подходящие куски кода и использовал в своих целях. Но сейчас время поджимает, а в работе с массивами я вообще не силен. Конечно со временем я разберусь, но сейчас всеже прощу натолкнуть в нужное русло ибо понимаю что это элементарно для знающих товарищей :)

1. Имеем лист где храниться список товара. У каждого товара есть свой уникальный код.
2. При работе макроса получаем массив со значениями продажи (по сути ЧЕК)
3. Нужно вписать в код кусочек который из этого массива arr() поочередно вытащит КОД ТОВАРА - столбец Д(онже 3 столбец двумерного массива) по этому значению произведет поиск на листе "Продажа" и изменит значение в нужной ячейке этого листа...
Код
Изменено: volkisreg - 20.05.2020 13:45:17
 
volkisreg, лучше бы файл пример приложили с исходными данным и рядом желаемым результатом.
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
volkisreg написал:
который из этого массива arr() поочередно вытащит КОД ТОВАРА - столбец Д(онже 3 столбец двумерного массива)
этим кодом:
arr() = Range("B12:B" & lr + 1).Value
в массив arr вносится ОДИН СТОЛБЕЦ данных, там нет 3-го столбца
Цитата
volkisreg написал:
произведет поиск на листе "Продажа" и изменит значение в нужной ячейке
где взять код - не понятно, но даже если каким-то чудесным способом он есть и его удалось найти на листе Продажи, то где находится "эта нужная ячейка", и ЧТО в нее нужно внести - никому неизвестно!
переведу вам как я прочитал ваше описание задачи:
нужно непонятно где взять код товара, найти его на листе Продажи, потом в непонятно какую ячейку внести непонятно какие изменения
каков по-вашему должен быть код этого макроса и чем он вам поможет?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Mershik написал:
лучше бы файл пример приложили с исходными данным
Файл большой с кучей листов. Там еще сложней будет копаться.
 
файл большой, с тем материалом что есть - шансов 0, поэтому смело продолжайте искать куски макросов и приспосабливать их к своему коду самостоятельно
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
где взять код - не понятно,
Вот тут уже этот массив имеет все данные. КОД находится в 3 столбце массива. строк массива может быть от 1 до lr

Код
 
arr() = Range("A" & nStr + 1 & ":H" & nStr + lr).Value 'Забрали в массив значения чека
         Sheets("ЧЕК").Select
            iRowS = Cells(Rows.Count, 1).End(xlUp).Row          
            Range("A" & iRowS + 3 & ":H" & iRowS + 2 + lr).Value = arr() '
    


Необходимо вытащить значение  из массива допустим  1 строка столбез 3 и далее кодом типа

Код
   '--------------------находим ячейку с номером счета
       Cells.Find(What:="Счет №", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate

макрос найдет нужную строку на листе "Товар"

Далее я уже сам представляю что и какие манипуляции надо сделать. на листе.
Затем надо будет взять следующее значение из массива и повторить все манипуляции...
Изменено: volkisreg - 20.05.2020 13:35:45
 
Цитата
Ігор Гончаренко написал:
поэтому смело продолжайте искать куски макросов и приспосабливать их к своему коду самостоятельно
Хорошо, а если перефразировать мой вопрос на:
Как взять значение x1y3 из массива X на Y в переменную Abc?
 
abc = arr(1, 3)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вы бы пример выложили бы строк на 20 и написали как есть и как надо. Решение уже бы получили. А так вам походу заняться больше нечем.
 
Цитата
Ігор Гончаренко написал:
abc = arr(1, 3)

Благодарю! Знал же что все должно быть просто :)

Вот так получилось. Делает что и требовалось, хоть и коряво написано )
Код

   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
Изменено: volkisreg - 20.05.2020 14:45:53
 
Цитата
Андрей_26 написал:
Вы бы пример выложили бы строк на 20 и написали как есть и как надо

Выше выложил что получилось. Работает. Но если можно как то улучшить(упростить) все после
Цитата
'--------------------находим ячейку с товаром
то был бы признателен.
Страницы: 1
Наверх