Вам лучше доп.лист, типа базы пример: столбец1 | столбец2 USB | 8xUSB USB | 4xUSB2+2xUSB3 USB | GA-H61N-USB3 USB | 8xUSB2 и так далее HDMI | Video INTEL CPU (HDMI) HDMI | INTEL CPU Video (D-Sub/DVI-D/HDMI/DP) HDMI | INTEL CPU Video (HDMI) и так далее... и искать там же... думаю так будет лучше, если каждый день занимаетесь с такими условиями...
или 2 вариант используя мой вариант, лучше разделитель не ",", а "какой то символ на пример #$"... подправим формулу результат должен быть от #$ результат #$, kim-а формула тоже должен работать правильно...
Вам лучше доп.лист, типа базы пример: столбец1 | столбец2 USB | 8xUSB USB | 4xUSB2+2xUSB3 USB | GA-H61N-USB3 USB | 8xUSB2 и так далее HDMI | Video INTEL CPU (HDMI) HDMI | INTEL CPU Video (D-Sub/DVI-D/HDMI/DP) HDMI | INTEL CPU Video (HDMI) и так далее... и искать там же... думаю так будет лучше, если каждый день занимаетесь с такими условиями...
или 2 вариант используя мой вариант, лучше разделитель не ",", а "какой то символ на пример #$"... подправим формулу результат должен быть от #$ результат #$, kim-а формула тоже должен работать правильно...ABC
MS Excel 2007 and 2010... ------------------------------- С Уважением, Даулет
Это будет потом, темболее я не настолько хорошо в этом плаваю, чтобы такое продумать. Мне бы еще к той формуле придумать + ячейку с исключениями. Например: Спустить всю таблицу еще на одну строку ниже, и сделать для этого одну ячейку для каждого столбца в 9й строке.
Например, если в столбце [D] будет производится поиск фразы "PCI" - то найти и расположить через запятую, все что он найдет с такой фразой.
Поа то что получилось в результате не многое изменено выглядит вот так: Скачать
Это будет потом, темболее я не настолько хорошо в этом плаваю, чтобы такое продумать. Мне бы еще к той формуле придумать + ячейку с исключениями. Например: Спустить всю таблицу еще на одну строку ниже, и сделать для этого одну ячейку для каждого столбца в 9й строке.
Например, если в столбце [D] будет производится поиск фразы "PCI" - то найти и расположить через запятую, все что он найдет с такой фразой.
Поа то что получилось в результате не многое изменено выглядит вот так: Скачатьwwizard
Сообщение отредактировал wwizard - Пятница, 13.04.2012, 23:21
Я дико прошу прощения пожалуйста помогите еще чуть чуть:
Очень нужна: ячейка с исключениями. Например: Спустить всю таблицу еще на одну строку ниже, и сделать для этого одну ячейку для каждого столбца в 9й строке.
Я дико прошу прощения пожалуйста помогите еще чуть чуть:
Очень нужна: ячейка с исключениями. Например: Спустить всю таблицу еще на одну строку ниже, и сделать для этого одну ячейку для каждого столбца в 9й строке.
Function izvlech(s$, p1$, p2$, p3$) As String Dim a izvlech = "" s = Replace(s, ",", " ") For Each a In Split(s) If a Like "*" & p1 & "*" Then izvlech = a: Exit Function Next For Each a In Split(s) If a Like "*" & p2 & "*" Then izvlech = a: Exit Function Next For Each a In Split(s) If a Like "*" & p3 & "*" Then izvlech = a: Exit Function Next End Function
[/vba] Можно их всех в очередь собрать, если нужно.
Quote (Hugo)
Сейчас уже код не найду, не сохранил...
вот он
Может что-то вроде:
[vba]
Code
Function izvlech(s$, p1$, p2$, p3$) As String Dim a izvlech = "" s = Replace(s, ",", " ") For Each a In Split(s) If a Like "*" & p1 & "*" Then izvlech = a: Exit Function Next For Each a In Split(s) If a Like "*" & p2 & "*" Then izvlech = a: Exit Function Next For Each a In Split(s) If a Like "*" & p3 & "*" Then izvlech = a: Exit Function Next End Function
[/vba] Можно их всех в очередь собрать, если нужно.wwizard
Сообщение отредактировал wwizard - Понедельник, 16.04.2012, 23:38
Очень нужна: ячейка с исключениями. Например: Спустить всю таблицу еще на одну строку ниже, и сделать для этого одну ячейку для каждого столбца в 9й строке.
Например, если в столбце [D] будет производится поиск фразы "PCI" - то найти и расположить через запятую, все что он найдет с такой фразой.
файл : лежит выше чуток.
Очень нужна: ячейка с исключениями. Например: Спустить всю таблицу еще на одну строку ниже, и сделать для этого одну ячейку для каждого столбца в 9й строке.
Например, если в столбце [D] будет производится поиск фразы "PCI" - то найти и расположить через запятую, все что он найдет с такой фразой.
Такой вариант - на 4 параметра с одним исключением в каждом:
[vba]
Code
Option Explicit
Function izvlech(s$, sep_$, p1$, p2$, p3$, p4$) As String Dim a, p izvlech = ""
For Each p In Array(p1, p2, p3, p4) For Each a In Split(s, ",") If UCase(a) Like "*" & UCase(Split(p, "|")(0)) & "*" Then If Not UCase(a) Like "*" & UCase(Split(p, "|")(1)) & "*" Then izvlech = izvlech & sep_ & Trim(a) End If End If Next If Len(izvlech) Then izvlech = Mid(izvlech, Len(sep_) + 1) Exit Function End If Next End Function
[/vba] На листе формулу пишем так (разделитель можно задать какой больше нравится): =izvlech($D10,", ",E$1,E$2,E$3,E$4)
Параметры в E1:E4 пишем так (после разделителя исключение):
intel|video core|--- Phenom|--- series|---
|--- - это обязательно! Ну или нужно изменять/усложнять код. Вместо "---" можно писать что-то другое отсутствующее.
Upgrade:
Такой вариант - на 4 параметра с одним исключением в каждом:
[vba]
Code
Option Explicit
Function izvlech(s$, sep_$, p1$, p2$, p3$, p4$) As String Dim a, p izvlech = ""
For Each p In Array(p1, p2, p3, p4) For Each a In Split(s, ",") If UCase(a) Like "*" & UCase(Split(p, "|")(0)) & "*" Then If Not UCase(a) Like "*" & UCase(Split(p, "|")(1)) & "*" Then izvlech = izvlech & sep_ & Trim(a) End If End If Next If Len(izvlech) Then izvlech = Mid(izvlech, Len(sep_) + 1) Exit Function End If Next End Function
[/vba] На листе формулу пишем так (разделитель можно задать какой больше нравится): =izvlech($D10,", ",E$1,E$2,E$3,E$4)
Параметры в E1:E4 пишем так (после разделителя исключение):
intel|video core|--- Phenom|--- series|---
|--- - это обязательно! Ну или нужно изменять/усложнять код. Вместо "---" можно писать что-то другое отсутствующее.Hugo
На листе формулу пишем так (разделитель можно задать какой больше нравится): =izvlech($D10,", ",E$1,E$2,E$3,E$4) Параметры в E1:E4 пишем так (после разделителя исключение):
прошу прощения, с макросами дел не имел. А куда это писать?
Quote (Hugo)
На листе формулу пишем так (разделитель можно задать какой больше нравится): =izvlech($D10,", ",E$1,E$2,E$3,E$4) Параметры в E1:E4 пишем так (после разделителя исключение):
прошу прощения, с макросами дел не имел. А куда это писать?wwizard
Сейчас добавлю в файл - с работы стараюсь ничего никуда не посылать...
Добавил. Лишнее из файла удалил, чтоб в лимит вкладывался. Я забыл, что в русском экселе вместо запятых нужно точку с запятой в формулах ставить: [vba]
Code
=izvlech($D13;", ";E$1;E$2;E$3;E$4)
[/vba] Заменил файл - ошибки не выдаёт, список параметров теперь неограничен.
Сейчас добавлю в файл - с работы стараюсь ничего никуда не посылать...
Добавил. Лишнее из файла удалил, чтоб в лимит вкладывался. Я забыл, что в русском экселе вместо запятых нужно точку с запятой в формулах ставить: [vba]
Code
=izvlech($D13;", ";E$1;E$2;E$3;E$4)
[/vba] Заменил файл - ошибки не выдаёт, список параметров теперь неограничен.Hugo
Да. В первой версии бил по пробелам - но в связи с новыми данными бью по запятым. В принципе, можно и этот параметр добавить в код - тогда для разных ячеек можно ставить по разному - где отбирать слова, а где "предложения".
Да. В первой версии бил по пробелам - но в связи с новыми данными бью по запятым. В принципе, можно и этот параметр добавить в код - тогда для разных ячеек можно ставить по разному - где отбирать слова, а где "предложения".Hugo
Нет, после | идёт одно исключение. Тогда нужно дописывать код, чтоб перебирал все исключения до конца массива.
Например: [vba]
Code
Function izvlech(s$, sep_$, ParamArray par()) As String Dim a, p, i As Byte, flag As Boolean izvlech = "" For Each p In par If InStr(p, "|") Then For Each a In Split(s, ",") If UCase(a) Like "*" & UCase(Split(p, "|")(0)) & "*" Then flag = False For i = 1 To UBound(Split(p, "|")) If UCase(a) Like "*" & UCase(Split(p, "|")(i)) & "*" Then flag = True End If Next If Not flag Then izvlech = izvlech & sep_ & Trim(a) End If Next End If
If Len(izvlech) Then izvlech = Mid(izvlech, Len(sep_) + 1) Exit Function End If Next End Function
[/vba]
Но конечно условие intel|video|core рубит почти все интеловские процессоры на корню (кроме INTEL CPU)
Нет, после | идёт одно исключение. Тогда нужно дописывать код, чтоб перебирал все исключения до конца массива.
Например: [vba]
Code
Function izvlech(s$, sep_$, ParamArray par()) As String Dim a, p, i As Byte, flag As Boolean izvlech = "" For Each p In par If InStr(p, "|") Then For Each a In Split(s, ",") If UCase(a) Like "*" & UCase(Split(p, "|")(0)) & "*" Then flag = False For i = 1 To UBound(Split(p, "|")) If UCase(a) Like "*" & UCase(Split(p, "|")(i)) & "*" Then flag = True End If Next If Not flag Then izvlech = izvlech & sep_ & Trim(a) End If Next End If
If Len(izvlech) Then izvlech = Mid(izvlech, Len(sep_) + 1) Exit Function End If Next End Function
[/vba]
Но конечно условие intel|video|core рубит почти все интеловские процессоры на корню (кроме INTEL CPU)Hugo