Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Получить маску (кодировку) при помощи функций с массивами. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Получить маску (кодировку) при помощи функций с массивами.
Logotip Дата: Пятница, 20.11.2015, 09:54 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.

Пример во вложении. Зеленым - данные. Желтым - то, что хочу получить.
С какими вопросами столкнулся:
1. Не хочу разбивать данные по каждому символу отдельно. Хотелось бы использовать формулу, которая работает с массивами.
2. Не смог сравнить строку на однотипность данных. Тоже хотелось бы использовать формулу с массивами.

Спасибо!
К сообщению приложен файл: 9566184.xlsx (46.7 Kb)
 
Ответить
СообщениеДобрый день.

Пример во вложении. Зеленым - данные. Желтым - то, что хочу получить.
С какими вопросами столкнулся:
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);"Х")

Но оптимальнее делать макросом

Автор - МВТ
Дата добавления - 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))
К сообщению приложен файл: 3310169.xlsx (13.6 Kb)


"Учиться, учиться и еще раз учиться!"
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);"Х")
К сообщению приложен файл: 9566184_1.xlsx (11.2 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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]

Автор - МВТ
Дата добавления - 20.11.2015 в 14:09
Logotip Дата: Пятница, 20.11.2015, 15:36 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Господа, как всегда всем плюсы и огромное спасибо!

Одного не понял, зачем иногда используется оператор
Код
И
, если и без его указания формула вполне верная?


Сообщение отредактировал Logotip - Пятница, 20.11.2015, 15:37
 
Ответить
СообщениеГоспода, как всегда всем плюсы и огромное спасибо!

Одного не понял, зачем иногда используется оператор
Код
И
, если и без его указания формула вполне верная?

Автор - Logotip
Дата добавления - 20.11.2015 в 15:36
SLAVICK Дата: Пятница, 20.11.2015, 15:43 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
зачем иногда используется оператор


И - значит, что все условия соблюдаются
Вы его уберите и увидите разницу :D


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
зачем иногда используется оператор


И - значит, что все условия соблюдаются
Вы его уберите и увидите разницу :D

Автор - SLAVICK
Дата добавления - 20.11.2015 в 15:43
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!