Получить маску (кодировку) при помощи функций с массивами.
Logotip
Дата: Пятница, 20.11.2015, 09:54 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Добрый день. Пример во вложении. Зеленым - данные. Желтым - то, что хочу получить. С какими вопросами столкнулся: 1. Не хочу разбивать данные по каждому символу отдельно. Хотелось бы использовать формулу, которая работает с массивами. 2. Не смог сравнить строку на однотипность данных. Тоже хотелось бы использовать формулу с массивами. Спасибо!
Добрый день. Пример во вложении. Зеленым - данные. Желтым - то, что хочу получить. С какими вопросами столкнулся: 1. Не хочу разбивать данные по каждому символу отдельно. Хотелось бы использовать формулу, которая работает с массивами. 2. Не смог сравнить строку на однотипность данных. Тоже хотелось бы использовать формулу с массивами. Спасибо! Logotip
Ответить
Сообщение Добрый день. Пример во вложении. Зеленым - данные. Желтым - то, что хочу получить. С какими вопросами столкнулся: 1. Не хочу разбивать данные по каждому символу отдельно. Хотелось бы использовать формулу, которая работает с массивами. 2. Не смог сравнить строку на однотипность данных. Тоже хотелось бы использовать формулу с массивами. Спасибо! Автор - Logotip Дата добавления - 20.11.2015 в 09:54
МВТ
Дата: Пятница, 20.11.2015, 11:10 |
Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация:
137
±
Замечаний:
0% ±
Excel 2007
Если Вы настаиваете, то так, но на больших объемах будет торомозить, тем более, что один и тот же массив трижды вычисляется. Формула массивнаяКод
=ЕСЛИ(СУММ(--ПСТР($A$2:$A$4;СТОЛБЕЦ()-2;1)) = (ИНДЕКС(ПСТР($A$2:$A$4;СТОЛБЕЦ()-2;1);1)*СЧЁТЗ(A2:A4));ИНДЕКС(ПСТР($A$2:$A$4;СТОЛБЕЦ()-2;1);1);"Х")
Но оптимальнее делать макросом
Если Вы настаиваете, то так, но на больших объемах будет торомозить, тем более, что один и тот же массив трижды вычисляется. Формула массивнаяКод
=ЕСЛИ(СУММ(--ПСТР($A$2:$A$4;СТОЛБЕЦ()-2;1)) = (ИНДЕКС(ПСТР($A$2:$A$4;СТОЛБЕЦ()-2;1);1)*СЧЁТЗ(A2:A4));ИНДЕКС(ПСТР($A$2:$A$4;СТОЛБЕЦ()-2;1);1);"Х")
Но оптимальнее делать макросом МВТ
Ответить
Сообщение Если Вы настаиваете, то так, но на больших объемах будет торомозить, тем более, что один и тот же массив трижды вычисляется. Формула массивнаяКод
=ЕСЛИ(СУММ(--ПСТР($A$2:$A$4;СТОЛБЕЦ()-2;1)) = (ИНДЕКС(ПСТР($A$2:$A$4;СТОЛБЕЦ()-2;1);1)*СЧЁТЗ(A2:A4));ИНДЕКС(ПСТР($A$2:$A$4;СТОЛБЕЦ()-2;1);1);"Х")
Но оптимальнее делать макросом Автор - МВТ Дата добавления - 20.11.2015 в 11:10
pabchek
Дата: Пятница, 20.11.2015, 11:25 |
Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация:
218
±
Замечаний:
0% ±
Excel 2007
Мой вариант (массивная) Код
=ЕСЛИ(ОСТАТ(LN(СРЗНАЧ(EXP(--ПСТР($A2:$A4;СТОЛБЕЦ(A2);1))));1)>0;"X";ПСТР($A2;СТОЛБЕЦ(A2);1))
Мой вариант (массивная) Код
=ЕСЛИ(ОСТАТ(LN(СРЗНАЧ(EXP(--ПСТР($A2:$A4;СТОЛБЕЦ(A2);1))));1)>0;"X";ПСТР($A2;СТОЛБЕЦ(A2);1))
pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Сообщение отредактировал pabchek - Пятница, 20.11.2015, 11:29
Ответить
Сообщение Мой вариант (массивная) Код
=ЕСЛИ(ОСТАТ(LN(СРЗНАЧ(EXP(--ПСТР($A2:$A4;СТОЛБЕЦ(A2);1))));1)>0;"X";ПСТР($A2;СТОЛБЕЦ(A2);1))
Автор - pabchek Дата добавления - 20.11.2015 в 11:25
_Boroda_
Дата: Пятница, 20.11.2015, 13:36 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация:
6616
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Для "Итого маска" можно вот такКод
=ЕСЛИ(И(C2:C4=C2);C2;"Х")
Формула массива. Вводится одновременным нажатием Контрл Шифт Ентер Или обычная формулаКод
=ЕСЛИ(СУММПРОИЗВ(--(C2:C4=C2))=СЧЁТЗ(C2:C4);C2;"Х")
Сразу если, то такой вариант (тоже формула массива)Код
=ЕСЛИ(И(ПСТР($A2:$A4;СТОЛБЕЦ(A8);1)=ПСТР($A2;СТОЛБЕЦ(A8);1));ПСТР($A2;СТОЛБЕЦ(A8);1);"Х")
Для "Итого маска" можно вот такКод
=ЕСЛИ(И(C2:C4=C2);C2;"Х")
Формула массива. Вводится одновременным нажатием Контрл Шифт Ентер Или обычная формулаКод
=ЕСЛИ(СУММПРОИЗВ(--(C2:C4=C2))=СЧЁТЗ(C2:C4);C2;"Х")
Сразу если, то такой вариант (тоже формула массива)Код
=ЕСЛИ(И(ПСТР($A2:$A4;СТОЛБЕЦ(A8);1)=ПСТР($A2;СТОЛБЕЦ(A8);1));ПСТР($A2;СТОЛБЕЦ(A8);1);"Х")
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Для "Итого маска" можно вот такКод
=ЕСЛИ(И(C2:C4=C2);C2;"Х")
Формула массива. Вводится одновременным нажатием Контрл Шифт Ентер Или обычная формулаКод
=ЕСЛИ(СУММПРОИЗВ(--(C2:C4=C2))=СЧЁТЗ(C2:C4);C2;"Х")
Сразу если, то такой вариант (тоже формула массива)Код
=ЕСЛИ(И(ПСТР($A2:$A4;СТОЛБЕЦ(A8);1)=ПСТР($A2;СТОЛБЕЦ(A8);1));ПСТР($A2;СТОЛБЕЦ(A8);1);"Х")
Автор - _Boroda_ Дата добавления - 20.11.2015 в 13:36
МВТ
Дата: Пятница, 20.11.2015, 14:09 |
Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация:
137
±
Замечаний:
0% ±
Excel 2007
Вот UDF [vba]Код
Option Explicit Function mask(Rng As Range, Number As Long) Dim arr, amask As String Dim I As Long, L As Long arr = Rng.Value L = Len(arr(1, 1)) If Number > L Then Exit Function amask = Mid(arr(1, 1), Number, 1) For I = 1 To UBound(arr) If Len(arr(I, 1)) <> L Then Exit Function If amask <> Mid(arr(I, 1), Number, 1) Then mask = "X" Exit Function End If Next mask = amask End Function
[/vba]
Вот UDF [vba]Код
Option Explicit Function mask(Rng As Range, Number As Long) Dim arr, amask As String Dim I As Long, L As Long arr = Rng.Value L = Len(arr(1, 1)) If Number > L Then Exit Function amask = Mid(arr(1, 1), Number, 1) For I = 1 To UBound(arr) If Len(arr(I, 1)) <> L Then Exit Function If amask <> Mid(arr(I, 1), Number, 1) Then mask = "X" Exit Function End If Next mask = amask End Function
[/vba] МВТ
Ответить
Сообщение Вот UDF [vba]Код
Option Explicit Function mask(Rng As Range, Number As Long) Dim arr, amask As String Dim I As Long, L As Long arr = Rng.Value L = Len(arr(1, 1)) If Number > L Then Exit Function amask = Mid(arr(1, 1), Number, 1) For I = 1 To UBound(arr) If Len(arr(I, 1)) <> L Then Exit Function If amask <> Mid(arr(I, 1), Number, 1) Then mask = "X" Exit Function End If Next mask = amask End Function
[/vba] Автор - МВТ Дата добавления - 20.11.2015 в 14:09
Logotip
Дата: Пятница, 20.11.2015, 15:36 |
Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Господа, как всегда всем плюсы и огромное спасибо! Одного не понял, зачем иногда используется оператор , если и без его указания формула вполне верная?
Господа, как всегда всем плюсы и огромное спасибо! Одного не понял, зачем иногда используется оператор , если и без его указания формула вполне верная? Logotip
Сообщение отредактировал Logotip - Пятница, 20.11.2015, 15:37
Ответить
Сообщение Господа, как всегда всем плюсы и огромное спасибо! Одного не понял, зачем иногда используется оператор , если и без его указания формула вполне верная? Автор - Logotip Дата добавления - 20.11.2015 в 15:36
SLAVICK
Дата: Пятница, 20.11.2015, 15:43 |
Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
зачем иногда используется оператор
И - значит, что все условия соблюдаются Вы его уберите и увидите разницу
зачем иногда используется оператор
И - значит, что все условия соблюдаются Вы его уберите и увидите разницу SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение зачем иногда используется оператор
И - значит, что все условия соблюдаются Вы его уберите и увидите разницу Автор - SLAVICK Дата добавления - 20.11.2015 в 15:43