alex1248, Значения типа темно-синяя Светло-серая - не отрабатываются. Выдает ошибку видать из-за дефиса. А если писать без дефиса, то использует только первый вариант - Серая или Синяя
Как это можно побороть? Чтобы либо брал 2 слова, либо дефис не пугал формулу?
alex1248, Значения типа темно-синяя Светло-серая - не отрабатываются. Выдает ошибку видать из-за дефиса. А если писать без дефиса, то использует только первый вариант - Серая или Синяя
Как это можно побороть? Чтобы либо брал 2 слова, либо дефис не пугал формулу?RemeR
Ошибка, думаю, из-за того, что СУММПРОИЗВ суммирует 2 раза, проверяя, например, и "Синяя", и "Темно-синяя", в итоге выбирается значение с индексом бОльшим нужного, а там пока пусто, вот и ошибка. Если табличку значений продолжить, что позже появляется значение, но, естественно, не то, которое нужно. В общем, надо подумать, поправить, думаю, можно.
Ошибка, думаю, из-за того, что СУММПРОИЗВ суммирует 2 раза, проверяя, например, и "Синяя", и "Темно-синяя", в итоге выбирается значение с индексом бОльшим нужного, а там пока пусто, вот и ошибка. Если табличку значений продолжить, что позже появляется значение, но, естественно, не то, которое нужно. В общем, надо подумать, поправить, думаю, можно.alex1248
skype alex12481632 Qiwi +79276708519
Сообщение отредактировал alex1248 - Суббота, 11.01.2014, 18:01
Кривоватый вариант, увы, снова с доп столбцом. Итог должен давать корректно, при условии, что "Синяя" будет в таблице в Лист2 выше, чем "Темно-синяя", "Бордовый" выше, чем "Бордовый евро", и т.д. Т.е. если появляется новый "сложный" цвет, проверяем, есть ли обычный, и если нет, сначала добавляем его. Наверное, и без этих премудростей сделать можно - при совпадениях выбирать тот вариант, что больше по длине (сейчас выбирается тот, что имеет бОльший индекс), но пока не получилось.
Кривоватый вариант, увы, снова с доп столбцом. Итог должен давать корректно, при условии, что "Синяя" будет в таблице в Лист2 выше, чем "Темно-синяя", "Бордовый" выше, чем "Бордовый евро", и т.д. Т.е. если появляется новый "сложный" цвет, проверяем, есть ли обычный, и если нет, сначала добавляем его. Наверное, и без этих премудростей сделать можно - при совпадениях выбирать тот вариант, что больше по длине (сейчас выбирается тот, что имеет бОльший индекс), но пока не получилось.alex1248
Ага, красиво. Только во второй аргумент функции вместо конкретных диапазонов вернуть столбцы таблицы, а то новые значения не будут учитываться. alex1248
это усложнит логику функции и, соответственно, замедлит её работу. с учётом того, что udf - и так не слишком быстрый способ, считаю это излишним. впрочем, если оч.хочется - то почему бы и нет? назовём это "домашним заданием".
это усложнит логику функции и, соответственно, замедлит её работу. с учётом того, что udf - и так не слишком быстрый способ, считаю это излишним. впрочем, если оч.хочется - то почему бы и нет? назовём это "домашним заданием".ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Ответ на домашнее задание UDF в подавляющем большинстве случаев не работают с целым столбцом. Т.е. с Range("A1:A1048576") работает, а с Range("A:A") - нет. Вероятно, можно что-нибудь придумать, но будет-ли от придумки практическая ценность?
Ответ на домашнее задание UDF в подавляющем большинстве случаев не работают с целым столбцом. Т.е. с Range("A1:A1048576") работает, а с Range("A:A") - нет. Вероятно, можно что-нибудь придумать, но будет-ли от придумки практическая ценность?RAN
Option Compare Text Function remer(s$, r As Range) i% = 0: t$ = "" Set r = Range(r.Cells(1), r.Worksheet.Cells(Rows.Count, r.Column).End(xlUp)) For Each c In r.Cells If InStr(s, c.Text) Then If Len(c.Text) > i Then t = c.Text: i = Len(c.Text) End If Next If t = "" Then remer = CVErr(xlErrNA) Else remer = t End Function
[/vba]
вариант (добавлена одна строчка) [vba]
Код
Option Compare Text Function remer(s$, r As Range) i% = 0: t$ = "" Set r = Range(r.Cells(1), r.Worksheet.Cells(Rows.Count, r.Column).End(xlUp)) For Each c In r.Cells If InStr(s, c.Text) Then If Len(c.Text) > i Then t = c.Text: i = Len(c.Text) End If Next If t = "" Then remer = CVErr(xlErrNA) Else remer = t End Function
А не умеет ли случайно Excel: Вставлять в поисковую строку нужного сайта (не поисковик) информацию из строки, переходить на результат, копировать ссылку найденного результата и вставлять в соседний столбец таблицы в Excel?
И так отработать весь столбец таблицы. [moder]И какое отношение имеет этот вопрос к данной теме? Читайте Правила форума[/moder]
Excel творит чудеса!!!
А не умеет ли случайно Excel: Вставлять в поисковую строку нужного сайта (не поисковик) информацию из строки, переходить на результат, копировать ссылку найденного результата и вставлять в соседний столбец таблицы в Excel?
И так отработать весь столбец таблицы. [moder]И какое отношение имеет этот вопрос к данной теме? Читайте Правила форума[/moder]RemeR