2017-01-23 3 views
1

Я ищу решение для следующей задачи, и не может решить в данный момент:поиск которых ячейка содержит определенный текст и изменить смещение ячейки

В Лист1 у меня заказ продукта листа. Колонка A - код продукта, столбец B - упорядоченная величина.

В Листе2 клиент выбирает несколько переменных, которые заканчиваются в объединенном теге выбранных переменных, например, например: A1 - клиент может выбирать из a, b или c (валидация значения через раскрывающийся список), A2 - клиент может выбрать один, 2 или 3 и A3, который клиент может выбрать между красным, синим или зеленым. Затем в значении A4 клиент выбирает нужное количество. В скрытой ячейке, скажем, A5 мы объединяем выбор переменных и получаем, например, тег a2blue, и нам нужно найти, что продукт WHICH из листа 1 имеет тег a2blue и, например, сменяет его количество на 5.

Теперь вернемся к sheet1, я хочу создать столбец C с возможными тегами для продукта.

Например, productX может иметь тег «a2blue, a3blue, b1blue». Я хочу создать формулу, которая ищет, какой продукт на листе 1 соответствует тегу клиента и добавляет количество. Скажем, мы нашли в листе 1, что в строке 9 есть код продукта ProductX, который в столбце C имеет теги «a2blue, a3blue, b1blue» (Внимание, продукт должен иметь несколько тегов, поэтому точный поиск невозможен , просто поиск, если текст содержится). Для этого продукта я хочу изменить количество до 5.

Уверен, что это также может быть разрешено VBA, но в VBA я новичок, поэтому потребуется дополнительная поддержка.

Snapshot of sheet 2. Cell B7 shows that based on the customer's selection from sheet1, as end anchor item we need a product which has the tag "Concretebitumenend". The quantity was already calculated in C7.

Изображение 1: В B4 и B5, например, клиент выбирает бетон и битум. Это позже на sheet2 сгенерирует некоторые «теги», необходимые для разных частей системы. At B4 and B5, for example, the customer chooses Concrete and Bitumen. This will later on sheet2 generate some "tags" needed for different parts of the system

Изображение 2: Снимок лист 2. Ячейка В7 показывает, что на основе выбора заказчика от sheet1, в качестве пункта конечных якорных нам нужен продукт, который имеет тег «Concretebitumenend». Величина уже была рассчитана в C7. На основе тега Concretebitumenend (тег в ячейке Sheet2 в ячейке B2, который требует 2 штуки в соответствии с C7), когда я нажимаю «Рассчитать» на листе 1, он должен найти, какой продукт в столбце «Sheet1» имеет этот тег среди перечисленных тегов. Например, в этом случае H29 НЕ подходит, так как он не имеет метки Concretebitumenend, поэтому следует найти правильный ряд, а затем он должен получить нужное количество в col E.

Thx для вашей поддержки!

+1

Это потребует VBA, так как формула не может относиться к себе, чтобы добавить величины к себе. –

+1

В чем именно ваш вопрос Майкл. Можете ли вы также поделиться тем, что вы пробовали до сих пор? –

+0

Ближе всего я мог получить: = INDEX (A5; MATCH (TRUE; COUNTIF (Sheet1! B4: B100; A5)> 0; 0)), но он не делает того, что я хотел. К сожалению, нет никакого способа загрузить excel здесь, чтобы это стало проще. Но для возобновления: ячейка A5 в Sheet2 содержит значение «a2blue». Ячейка A4 содержит нужное количество, скажем 5. В листе 1 у нас есть столбец A с уникальным кодом продукта (в настоящий момент он является релевантным), столбец B с количеством (которое я хочу обновить) и столбец C с тегами продукта. Он содержит 100 строк, каждый с разными тегами. – Michael

ответ

0

Решение найдено:

Sub proof() 
' 
' proof Macro 
' 
    n2 = 26 
    n1 = 489 

    For i = 29 To 489 
    Cells(i, 5) = 0 
    Next i 

    For i = 1 To n2 
     For j = 29 To n1 

     a = UCase(Sheets("sheet2").Cells(i, 2)) 
     b = UCase(Sheets("sheet1").Cells(j, 8)) 
     If a = "" Then GoTo 10 
     If (a <> "" And b <> "") And InStr(b, a) Then 
     'Stop 
     Sheets("sheet1").Cells(j, 5) = Sheets("sheet1").Cells(j, 5) + Sheets("sheet2").Cells(i, 3) 

     End If 


     Next j 
10 Next i 


' 
End Sub 
Смежные вопросы