Доброго времени суток! Помогите пожалуйста разобраться: Мне нужно, чтобы при наборе 3 любых значений в ячейке А2 из ячейки В2 в ячейке С2 была 1? Можно ли это сделать без макросов? Заранее спасибо! Очень приятно, что тут такой хороший форум!
Доброго времени суток! Помогите пожалуйста разобраться: Мне нужно, чтобы при наборе 3 любых значений в ячейке А2 из ячейки В2 в ячейке С2 была 1? Можно ли это сделать без макросов? Заранее спасибо! Очень приятно, что тут такой хороший форум!ПАМ
Как Вы их собрались "набирать"? Через запятую? Формула получится зубодробительной Бросайте это дело и вводите значения по одному, в А2:А4 Как только будет три значения из списка, формула
Как Вы их собрались "набирать"? Через запятую? Формула получится зубодробительной Бросайте это дело и вводите значения по одному, в А2:А4 Как только будет три значения из списка, формула
Код
=--(SUMPRODUCT(--(ISNUMBER(SEARCH(A2:A4;B2))))=3)
(перевод по флажку слева от формулы) вернет 1Serge_007
Всё же попробую решить задачу =) Во вложении общий набросок решения. Чувствительность к дублированию значений пока отсутствует (можно ввести 2 одинаковых целевых значения и ещё одно - и даст 1-ку), но это исправимо. Пока интересно - приемлем ли в целом такой подход? Разные значения разнесены по разным ячейкам.
ПАМ, здравствуйте.
Всё же попробую решить задачу =) Во вложении общий набросок решения. Чувствительность к дублированию значений пока отсутствует (можно ввести 2 одинаковых целевых значения и ещё одно - и даст 1-ку), но это исправимо. Пока интересно - приемлем ли в целом такой подход? Разные значения разнесены по разным ячейкам.Rioran
AlexM, подскажите пожалуйста до меня немного не доходит как изменить вашу формулу массива, если искомых значений (ячейка В2) не 6 например а 10 а слов нужно 4 или 5? спасибо за помощь!
AlexM, подскажите пожалуйста до меня немного не доходит как изменить вашу формулу массива, если искомых значений (ячейка В2) не 6 например а 10 а слов нужно 4 или 5? спасибо за помощь!ПАМ
число 6 указывает количество слов в ячейке В2. Для ячейки А2
Код
СТРОКА($1:$3)
число 3 указывает количество слов в ячейке А2 Тройка в конце формулы задает количество совпадений слов. Так что если в В2 10 слов, в А2 вводим 5 слов, а совпадать должно 4, то формула такая
Формула будет правильно работать, если слова из 5 букв и разделены двумя символами, например как у вас ", " (запятая и пробел)
Для ячейки В2
Код
СТРОКА($1:$6)
число 6 указывает количество слов в ячейке В2. Для ячейки А2
Код
СТРОКА($1:$3)
число 3 указывает количество слов в ячейке А2 Тройка в конце формулы задает количество совпадений слов. Так что если в В2 10 слов, в А2 вводим 5 слов, а совпадать должно 4, то формула такая
В функции ПСТР() третий аргумент пятерка указывает длину слова, а 7 перед функцией СТРОКА() интервал между первыми буквами слов 5+2=7, где 2 это запятая и пробел. Если в ячейках слова будут разной дины, то лучше сделать функцию пользователя, так как формула получится гигантской. В функции пользователя можно применить тот же алгоритм как в формуле. Создать два массива с помощью функции Split, перемножить их, а затем суммировать все элементы полученного массива.
В функции ПСТР() третий аргумент пятерка указывает длину слова, а 7 перед функцией СТРОКА() интервал между первыми буквами слов 5+2=7, где 2 это запятая и пробел. Если в ячейках слова будут разной дины, то лучше сделать функцию пользователя, так как формула получится гигантской. В функции пользователя можно применить тот же алгоритм как в формуле. Создать два массива с помощью функции Split, перемножить их, а затем суммировать все элементы полученного массива.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Function Sovpadeniya(Nabor1 As String, Nabor2 As String, Kolichestvo As Long) As Long Dim a, b, i As Long, j As Long, n As Long a = Split(Nabor1, ", "): b = Split(Nabor2, ", ") For i = 0 To UBound(a) For j = 0 To UBound(b) If a(i) = b(j) Then n = n + 1 Next j Next i Sovpadeniya = IIf(n = Kolichestvo, 1, 0) End Function
[/vba] Слова должны быть разделены ", " (запятая и пробел) символа перевода строки не должно быть. В наборах слова могут быть разной длины. Количество слов в наборе любое. Количество слов повлияет на скорость обработки. Количество совпадений можно задать в аргументе функции.
Функция пользователя[vba]
Код
Function Sovpadeniya(Nabor1 As String, Nabor2 As String, Kolichestvo As Long) As Long Dim a, b, i As Long, j As Long, n As Long a = Split(Nabor1, ", "): b = Split(Nabor2, ", ") For i = 0 To UBound(a) For j = 0 To UBound(b) If a(i) = b(j) Then n = n + 1 Next j Next i Sovpadeniya = IIf(n = Kolichestvo, 1, 0) End Function
[/vba] Слова должны быть разделены ", " (запятая и пробел) символа перевода строки не должно быть. В наборах слова могут быть разной длины. Количество слов в наборе любое. Количество слов повлияет на скорость обработки. Количество совпадений можно задать в аргументе функции.AlexM