Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Microsoft Excel FAQ (часть 5)

Модерирует : gyra, Maz

Maz (27-03-2018 08:04): Microsoft Excel FAQ (часть 6)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Просьба к посетителям топика дополнять шапку наиболее часто задаваемыми вопросами со ссылками на ответы
в обязательном порядке

 
  • Смена представления имен столбцов с буквенного на цифровое и обратно


    Сумма прописью
  • Надстройка "PROP" (сумма прописью)
  • надстройка Excellerator (c) Michael Zemlanukha & Maxim Shemanarev
  • макрос Num2String


  • Список соответствия имен функций в английской и русской версиях Excel или здесь
  • Описание Microsoft Excel File Format (eng.)
  • Горячие клавиши в Excel (табличка)
  • краткая, но емкая инструкция для чайников по добавлению готовых макросов (на примере макросов по увеличению размера шрифта на X пунктов от мемебера ferias
     
    Предыдущие ветки топика: Часть 1 | Часть 2 | Часть 3 | Часть 4
     
    Все вопросы по программированию (макросы, скрипты, пользовательские функции и т.п.) обсуждаются в теме Excel VBA в разделе Прикладное программирование.
     
    При необходимости выложить скриншот, пользуйтесь сервисом ImageShack® (ограничение на размер файла <1.5 Mb)
     
    Книга Джон Уокенбах "Подробное руководство по созданию формул в Microsoft Office Excel 2002" PDF 34МБ Файлы к книге

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:13 09-03-2010 | Исправлено: uzeerpc, 12:47 20-12-2017
    winter1971

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asbo
    Ура, как-то само собой получилось. Даже и не ожидал.

    Всего записей: 328 | Зарегистр. 19-12-2004 | Отправлено: 12:18 08-06-2011
    msmih



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    народ, подскажите как решить такую задачу:
    есть 200 листов в книге. как подсчитать количество листов с определенными условиями (условно если на листе А1=1, А2=2 - тогда листы считаются)

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 19:40 08-06-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    msmih, думаю, только макросом...
    Если возникнут вопросы по макросу - в смежную тему. Могут быть нюансы с циклом и понадобится альтернативный вариант.

    Код:
    Sub sb_SheetsQty()
    Dim i% ' k%
    Dim bTmp As Boolean
    Dim sSht As Variant
        For Each sSht In Sheets
            bTmp = True ' вставить код со своими условиями проверки
            i = i - bTmp
        Next
        Debug.Print i
    End Sub

     
    Добавлено:
    Или же, если формулами, создавать отдельный лист, на него выносить ссылки на проверяемые ячейки, проверять условия и считать... Ссылки можно автоматом генерить, если нотация именования листов позволяет это.

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 19:55 08-06-2011
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    обсуждалось ранее тунц
    Подробнее... и было предложено следующее Подробнее...
     
    вопрос в том - как модернизировать чтобы работала формула типа (Условия1 И Условие2) ИЛИ (Условие3 И Условие4)

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 18:05 09-06-2011
    VicKos

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    InSe0F
    Насколько я помню, тогда нужно было найти наставника с определенной кафедры, а сейчас что?
    Excel - штука конкретная, и в данном случае непонятно, какие условия и что нужно найти?

    Всего записей: 44 | Зарегистр. 28-07-2010 | Отправлено: 21:41 09-06-2011
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сейчас задача несколько другая, но если рассматривать по аналогии, допустим что Наставник может стоять в столбце РОЛЬ1 или РОЛЬ2 и заведомо не известно в каком может стоять "Наставник"

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 10:46 10-06-2011
    VicKos

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    InSe0F
    Всё равно возникает неопределённость. Откуда Excel знать, из какого именно столбца требуется брать результат в том или ином случае? Нужны какие то критерии, например, если в столбце РОЛЬ1 пустая ячейка, тогда ищем в столбце РОЛЬ2. Не имея конкретного примера, невозможно создать универсальную формулу, которая сама догадается, что хочет пользователь.

    Всего записей: 44 | Зарегистр. 28-07-2010 | Отправлено: 11:22 10-06-2011
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
     например, если в столбце РОЛЬ1 пустая ячейка

    ну по логике - как в столбце РОЛЬ может стоять не пустая ячейка а другая РОЛЬ
     
    РОЛЬ1 РОЛЬ2    
    Наставник Професор    
    Зав.Кафедры Наставник    
    Професор Наставник    
    Зам.Зав.Кафедры Доцент

     
    заранее не известно где стоит наставник но он может стоять в любом столбце
    Так понятнее? или забить данные в excel?
     
    я пробовал в условие добавить ИЛИ... но не заработало (

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 15:27 10-06-2011 | Исправлено: InSe0F, 15:27 10-06-2011
    VicKos

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Тоже попробовал убрать второе условие с проверкой на слово "преподаватель" и добавил проверку "наставник" в столбце РОЛЬ1
     
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(ИЛИ(тНаставники[Роль 1]="наставник";тНаставники[Роль 2]="наставник")));тНаставники[Преподаватель]);"")
     
    Но почему то такая формула выдаёт неверный результат - в кафедру физики упорно лепит Филкина, а должен быть Кузнецов (Хотя, правильно - проверку на "преподавателя" я же убрал, поэтому на ассистента формула не обращает внимания). При этом на других кафедрах результат правильный. Что то тут некорректно именно с функцией ИЛИ.
     
    Добавлено:
    Сначала пробовал рассуждать так:

    Код:
    Если в качестве примера взять предыдущий файл со страницы 52 и попробовать применить к формуле kimtan`а новое условие "Наставник может стоять в столбце РОЛЬ1 или РОЛЬ2 и заведомо не известно в каком", рассмотрим старую формулу:
     
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(тНаставники[Роль 1]="преподаватель")*(тНаставники[Роль 2]="наставник"));тНаставники[Преподаватель]);"")
     
    Условие 1 - ([@Кафедра]=тНаставники[Кафедра])
    Условие 2 - (тНаставники[Роль 1]="преподаватель")
    Условие 3 - (тНаставники[Роль 2]="наставник")
     
    Результат работы формулы берётся из строки таблицы, в которой выполняются все три условия - (1*1*1=1). В тех строках, где хотя бы одно условие не выполняется, - результат произведения условий будет равен 0 (0*1*1=0).
     
    Если слово "наставник" может находиться не только в столбце [Роль 2], но и в столбце [Роль 1], тогда следует уточнить условия поиска:
     
    Условие 3 - (ИЛИ(тНаставники[Роль 1]="наставник");(тНаставники[Роль 2]="наставник"))
     
    НО! В Условии 2 формула уже проверяла столбец [Роль 1] на наличие слова "преподаватель" и, если там вместо "преподаватель" будет "наставник", то Условие 2 окажется невыполненным.
     
    Значит, необходимо изменить и Условие 2:
     
    Условие 2 - (ИЛИ(тНаставники[Роль 1]="преподаватель");(тНаставники[Роль 1]="наставник"))
     
    Формула с новыми условиями:
     
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(ИЛИ(тНаставники[Роль 1]="преподаватель");(тНаставники[Роль 1]="наставник"))*(ИЛИ(тНаставники[Роль 1]="наставник");(тНаставники[Роль 2]="наставник")));тНаставники[Преподаватель]);"")

     
    Тоже ничего не получилось, неверный результат.
    =================================
     
    Вот так вроде работает:
     
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(тНаставники[Роль 1]="наставник"));тНаставники[Преподаватель]);ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(тНаставники[Роль 1]="преподаватель")*(тНаставники[Роль 2]="наставник"));тНаставники[Преподаватель]);""))
     
    если "наставник" случайно попал в столбец  [Роль 1], его найдёт первая половина формулы (не обращая внимания на значение во втором стобце), а если нет, то вторая половина по столбцу [Роль 2].

    Всего записей: 44 | Зарегистр. 28-07-2010 | Отправлено: 15:56 10-06-2011 | Исправлено: VicKos, 18:00 10-06-2011
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(тНаставники[Роль 1]="наставник"));тНаставники[Преподаватель]);ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(тНаставники[Роль 1]="преподаватель")*(тНаставники[Роль 2]="наставник"));тНаставники[Преподаватель]);""))  

    да ) до этого решения я тоже дошел
     
    но в нем есть изъян - оно не универсально, т.е. не совсем удобно... особенно если устовий будет 3...  
     
    я так полагаю единственный вариант переходить к макросу?

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 18:06 10-06-2011
    VicKos

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    InSe0F

    Цитата:
    я так полагаю единственный вариант переходить к макросу?

    Макрос тоже не панацея, если условия будут постоянно изменяться.

    Всего записей: 44 | Зарегистр. 28-07-2010 | Отправлено: 19:17 10-06-2011
    kimtan

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    InSe0F
    Узнаю свою формулу, но помогать Вам не намерен пока не будет нормального примера с объяснениями в виде файла *.xls
    Удачи!

    Всего записей: 291 | Зарегистр. 28-02-2009 | Отправлено: 20:00 10-06-2011
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Макрос тоже не панацея, если условия будут постоянно изменяться.

    ну почему же - если функция будет искать в Н условий по Н ячейкам - универсальная должна быть
     

    Цитата:
    Узнаю свою формулу, но помогать Вам не намерен пока не будет нормального примера с объяснениями в виде файла *.xls  

    вот
     
    например для Сидоров'а должен выводиться наставник Виненко у которого указана Наставник в "Роль2"
     
    http://d.pr/MiRZ

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 01:29 11-06-2011
    kimtan

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    InSe0F
    Вот вам универсальная формула массива:
     
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(МУМНОЖ(--(тНаставники[[Роль 1]:[Роль 2]]="Наставник");ТРАНСП(СТОЛБЕЦ(тНаставники[[#Заголовки];[Роль 1]:[Роль 2]])^0))>0));тНаставники[Преподаватель]);"")
     
    Ключевые моменты выделил жирным шрифтом.

    Всего записей: 291 | Зарегистр. 28-02-2009 | Отправлено: 12:53 11-06-2011
    VicKos

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kimtan
    Извините, что вмешиваюсь, но...
    Если в таблице тНаставники переместить третью строку с преподавателем Кузнецовым на место первой строки, ваша новая формула вместо Кузнецова выдаёт ассистента Филкина (впрочем, он тоже "наставник", так что не уверен, ошибка ли это). Видимо, ищется последняя, удовлетворяющая критериям поиска, запись в таблице.

    Всего записей: 44 | Зарегистр. 28-07-2010 | Отправлено: 20:15 11-06-2011
    kimtan

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Видимо, ищется последняя, удовлетворяющая критериям поиска, запись в таблице.

     
    Именно так формула работала с самого начала, и так продолжает работать
     
     
     
    Добавлено:
    Для того, чтобы возвращала первую запись, нужно внести небольшие изменения:
     
    =ЕСЛИОШИБКА(ИНДЕКС(тНаставники[Преподаватель];ПОИСКПОЗ(1;1/(([@Кафедра]=тНаставники[Кафедра])*(МУМНОЖ(--(тНаставники[[Роль 1]:[Роль 2]]="Наставник");ТРАНСП(СТОЛБЕЦ(тНаставники[[#Заголовки];[Роль 1]:[Роль 2]])^0))>0));));"")

    Всего записей: 291 | Зарегистр. 28-02-2009 | Отправлено: 22:37 11-06-2011
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kimtan
    спасибо)
     
    да и если можно немного пояснить работу МУМНОЖ , с двойным отрицанием...

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 23:41 11-06-2011 | Исправлено: InSe0F, 23:42 11-06-2011
    kimtan

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Что конкретно непонятно?  
    Как работает МУМНОЖ() или для чего в формуле используется бинарное отрицание?

    Всего записей: 291 | Зарегистр. 28-02-2009 | Отправлено: 17:10 12-06-2011
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    для чего в формуле используется бинарное отрицание

    это первое

    Цитата:
    ТРАНСП(СТОЛБЕЦ(тНаставники[[#Заголовки];[Роль 1]:[Роль 2]])^0))>0))

    от сюда я как понял мы массив/матрицу единиц) только не понятно зачем она 1*1 все равно 1...

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 18:13 12-06-2011
    kimtan

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Бинарное отрицание используется для преобразования массива логических ИСТИНА и ЛОЖЬ, полученных в результате сравнения: (тНаставники[[Роль 1]:[Роль 2]]="Наставник"), в числа, соответственно в 1 и 0, так как МУМНОЖ() понимает только числовые массивы.
     
    СТОЛБЕЦ(тНаставники[[#Заголовки];[Роль 1]:[Роль 2]])^0 возвращает горизонтальный массив состоящий из двух единиц. Транспонируем его в вертикальный массив (требуется для корректной работы во втором аргументе функции МУМНОЖ() - "массив2"). Подробнее про работу функции МУМНОЖ() можно почитать в справке Excel.

    Всего записей: 291 | Зарегистр. 28-02-2009 | Отправлено: 18:28 12-06-2011 | Исправлено: kimtan, 18:29 12-06-2011
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Компьютеры » Программы » Microsoft Excel FAQ (часть 5)
    Maz (27-03-2018 08:04): Microsoft Excel FAQ (часть 6)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru