Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2016, 12:31   #1
gonny
Новичок
Джуниор
 
Регистрация: 03.02.2014
Сообщений: 1
По умолчанию Проверить наличие слова и на основе этого подставить в строку

Задача следующая. В файле Excel есть 2 листа
1) Категории
2) Товар
Надо по названию определить к каким категориям относится товар.
Слева от категории артикул категории
Справа от категории 4 ячейки с условиями ( (1 И 2) ИЛИ 3) НЕТ 4
Например
Товар
Чехол Iphone 6
Категории
Iphone (1- Iphone,2-,3-,4-)
Iphone 6 (1 - Iphone 6, 2- ,3-, 4-plus)
Iphone 6 Plus (1-iphone 6, 2- plus,3-,4-)

Тогда получим, что для категорий Iphone и iphone 6 все условия выполняются - артикул слева от категории ставим в ячейку справа от товара через запятую.
А для Iphone 6 plus не выполняется и его артикуль не надо ставить.

Я так понимаю - макрос должен брать каждый товар, проходиться по всем условиям категорий, потом расчитывать логическую формулу - ИСТИНА или ЛОЖЬ она. Если Истина, то выписывать артикул категории. Потом проходить еще раз и через запятую собирать все полученные артикулы и ставить справа от товара.
категории с товаром-2.xlsx

Последний раз редактировалось gonny; 06.01.2016 в 13:10.
gonny вне форума Ответить с цитированием
Старый 06.01.2016, 14:05   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

1. откройте лист Товары
2. впишите что-нибудь в ячейку С2 (она не должна быть пустой) или удалите строку 2
3. правой кнопкой по ярлыку листа Товары
4. Исходный текст
5. в открывшееся окно скопируйте этот
Код:
Sub Start()
  Dim r As Long, fk As Range, cl As Range, ar
  r = 2
  Do While Not IsEmpty(Cells(r, 3))
    Cells(r, 4) = AllArt(Cells(r, 3))
    r = r + 1
  Loop
End Sub


Function AllArt(This As String) As String
  Dim r As Long, s As String
  r = 1
  With Worksheets(1)
    Do While Not IsEmpty(.Cells(r, 3))
      If This Like "*" & .Cells(r, 3) & "*" Then
        s = s & ", " & .Cells(r, 1)
      End If
      r = r + 1
    Loop
    If s <> "" Then AllArt = Right(s, Len(s) - 2)
  End With
End Function
6. выполните процедуру Start
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.01.2016, 22:58   #3
deni1982
Пользователь
 
Регистрация: 01.03.2010
Сообщений: 25
По умолчанию

Спасибо мегамозгу
deni1982 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить наличие MySql Utkin Lazarus, Free Pascal, CodeTyphon 4 09.07.2015 16:04
Поиск слова в строке и редактирование этого слова Wasili4 Microsoft Office Excel 3 22.06.2011 21:06
Проверить наличие устройства Hulkus Помощь студентам 0 27.02.2011 23:50
Как подставить дополнительную строку в конце каждой страницы? The_KING Microsoft Office Word 21 25.01.2011 22:39
Как подставить строку в код? Voyager-69 Общие вопросы Delphi 4 09.05.2008 00:08