Excel формулы case если

Excel case statements can be handled with either SWITCH function or nested IF statements. A popular use for the IF function is creating nested formulas that can check for various criteria. However, nested IF statements can get pretty complicated and cumbersome when dealing with several conditions.

Excel has introduced the SWITCH function which can essentially do what nested IF functions can, using only one function. In this article, we’re going to take a look at the differences between these two Excel case statements and how you can compare several conditions more efficiently. You can download our sample workbook below.

The Basics of the IF Function

The IF function is one of the most popular functions of Excel. It allows creating conditions, on which a logic can be implemented. The IF function gives a TRUE or FALSE result depending on the outcome of the condition check.

There really are no other alternatives to the IF function, therefore, users typically prefer using nested structures which means using the function over and over again. Let’s see how this works on an example. Below is a set of IF formulas inside one another.

Excel Case Statements: SWITCH Function Versus Nested IF

This formula checks for 4 conditions, «S», «M», «L» and “other” to give a measurement. To do this, we need 2 extra IF functions which are connected to the negative result argument of the previous one. The logic in this structure is to continue the formula if first condition is not met. Then look at the second condition and continue likewise until the criteria is satisfied.

Excel Case Statements: SWITCH Function Versus Nested IF

As you can imagine, nested IF statements become harder to read and maintain as the number of condition increase. The SWITCH function was introduced as a user-friendly alternative to alleviate the burden of too many IF formulas.

The Better Alternative: SWITCH Function

The SWITCH function was first introduced in Excel 2016 not to replace the IF function, but instead as an alternative to nested IF formulas. The SWITCH function evaluates the value in its first argument against the value-result pairs, and returns the result from the matched pair if there is a match, or the default value if there are none.

Syntax

=SWITCH(expression, value1, result1, [default or value2, result2],…[default or value3, result3])

Argument Description
expression Expression is the value (i.e. a number, date, or text) that will be compared against value1…value126.
value1…value126 valueN (nth value parameter) is the value that will be compared against an expression.
result1…result126 resultN (nth result parameter) is the value to be returned when the corresponding valueN argument that matches the expression. resultN must be entered for each corresponding valueN argument.
default (Optional) default is the value to be returned in case there are no matches in any valueN expressions. The default has no corresponding resultN expression. default must be the final argument of the function.

If a default value is not defined and no matches are found, the formula returns #N/A error.

Note: Because functions are limited to 254 parameters, you can use up to 126 pairs of value and result arguments.

SWITCH vs. IF

Let’s revisit the measurement example using the SWITCH function this time.

Excel Case Statements: SWITCH Function Versus Nested IF

The first advantage is the number of formulas used in this argument. When creating a nested IF statement, you need to be actively tracing where you’re at in the formula at each step. Using the SWITCH formula, you can do what 126 IF functions could, using a single function.

Note: It is not advisable to create a SWITCH function that contains 126 value-result pairs. Instead, try using the VLOOKUP function for matching large condition sets. For more information about the VLOOKUP, check out our HOW TO VLOOKUP article.

The second advantage comes from the fact that your formula is going to be much shorter in most cases. Formula text with the SWITCH function is shorter, and easier to read.

Excel Case Statements: SWITCH Function Versus Nested IF

Содержание

  1. Как написать заявление о прецеденте в Excel (с примером)
  2. Пример: оператор Case в Excel
  3. Дополнительные ресурсы
  4. SWITCH (функция SWITCH)
  5. Обзор
  6. Примеры
  7. Excel формулы case если
  8. Оператор Select Case
  9. Синтаксис
  10. Замечания
  11. Пример
  12. См. также
  13. Поддержка и обратная связь

Как написать заявление о прецеденте в Excel (с примером)

Оператор case — это тип оператора, который проходит через условия и возвращает значение при выполнении первого условия.

Самый простой способ реализовать оператор case в Excel — использовать функцию ПЕРЕКЛЮЧАТЕЛЬ() , которая использует следующий базовый синтаксис:

Эта конкретная функция просматривает ячейку A2 и возвращает следующее значение:

  • « На страже », если ячейка A2 содержит «G»
  • « Вперед », если ячейка A2 содержит «F»
  • « По центру », если ячейка A2 содержит «C»
  • « Нет », если ячейка A2 не содержит ни одного из предыдущих значений.

В следующем примере показано, как использовать эту функцию на практике.

Пример: оператор Case в Excel

Предположим, у нас есть следующий список баскетбольных позиций:

Мы будем использовать следующую функцию SWITCH() , чтобы вернуть определенное имя позиции в столбце B на основе значения в столбце A:

Мы введем эту формулу в ячейку B2 , а затем скопируем и вставим ее в каждую оставшуюся ячейку в столбце B:

Обратите внимание, что эта формула возвращает следующие значения в столбце B:

  • « Guard », если столбец A содержит «G»
  • « Вперед », если столбец A содержит «F»
  • « По центру », если столбец A содержит «C»
  • « Нет », если столбец A не содержит ни одного из предыдущих значений.

Обратите внимание, что последнее значение в столбце B возвращает значение « Нет », поскольку мы не указали конкретное значение для возврата «Z» в формуле.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в Excel:

Источник

SWITCH (функция SWITCH)

Функция ПЕРЕКЛЮЧ вычисляет значение (которое называют выражением) на основе списка значений и возвращает результат, соответствующий первому совпадающему значению. Если совпадения не обнаружены, может быть возвращено необязательное стандартное значение.

Примечание: Эта функция доступна на Windows или Mac, если у вас Office 2019 или если у вас есть подписка Microsoft 365 . Если вы являетесь подписчиком Microsoft 365, убедитесь, что у вас установлена последняя версия Office.

SWITCH(выражение;значение1;результат1;[по_умолчанию или значение2;результат2];…[по_умолчанию или значение3;результат3])

выражение — это значение (например, число, дата или текст), которое сравнивается со значениями значение1…значение126.

значениеN — это значение, с которым сравнивается выражение.

результатN — это значение, возвращаемое, если аргумент значениеN совпадает с выражением. Значение результатN необходимо задать для каждого аргумента значениеN .

по умолчанию
(необязательно)

Значение, возвращаемое, если совпадения выражения со значениями значение1. значение126 не обнаружены. Аргумент по_умолчанию можно быстро найти, поскольку для него не задается соответствующее значение результатN (см. примеры). Значение по_умолчанию должно быть последним в функции.

Поскольку у функций не может быть больше 254 аргументов, можно использовать до 126 пар аргументов значениеN и результатN.

Обзор

Самая простая функция ПЕРЕКЛЮЧ имеет такую структуру:

=ПЕРЕКЛЮЧ(значение для переключения;значение, которое должно совпасть1. [2–126];значение, возвращаемое при совпадении1. [2–126];значение, возвращаемое при отсутствии совпадений)

В ней можно вычислить до 126 совпадающих значений и результатов.

Значение для переключения? В данном случае значение ДЕНЬНЕД(A2) равно 2.

Какое значение должно совпасть? В данном случае — 1, 2 и 3.

Какой результат должен быть возвращен при совпадении? В данном случае: «воскресенье» для значения 1, «понедельник» для значения 2 и «вторник» для значения 3.

Стандартное значение, возвращаемое при отсутствии совпадений. В данном случае — текст «совпадения отсутствуют».

Примечание: Если совпадающих значений нет и аргумент по умолчанию не указан, функция ПЕРЕКЛЮЧ возвращает ошибку #Н/Д!.

Примеры

Вы можете проверить, как работает функция ПЕРЕКЛЮЧ, скопировав образец данных из следующей таблицы и вставив его в ячейку A1 нового листа Excel. Если результаты формул не отображаются, выделите формулы и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Поскольку в ячейке A2 указано значение 2 и аргумент «результат», соответствующий значению 2, — это «понедельник», функция ПЕРЕКЛЮЧ возвращает значение «понедельник».

Поскольку совпадения отсутствуют и аргумент иначе не указан, функция ПЕРЕКЛЮЧ возвращает значение #Н/Д!.

Источник

Excel формулы case если

При создании сложных программ один из ключевых моментов — возможность предусмотреть несколько вариантов развития событий. Самый простой и классический пример — оператор «If . Then . Else . End«, который позволяет выбрать одно из двух действий в зависимости от результатов проверки каких-либо значений. Бывает, что в результате такой проверки необходимо выбрать из множества вариантов. Один из выходов: добавить множество «. ElseIf . «, что несколько усложняет синтаксис программы (лёгкость её чтения). Однако это очень мощный оператор, открывающий большие возможности. Подробнее о нём можно узнать здесь.

Альтернативой оператору «If . End» служит оператор «Select Case» (с английского «Select Case» можно перевести как «Выбор Ситуации»), который упрощает восприятие кода «на глаз». И если «If . End» оператор в каждом своём «ElseIf» вынужден обращаться к проверяемым значениям снова и снова (допустим, выражение каждый раз одинаковое), то «Select Case» делает это только один раз, что позволяет последнему на больших массивах данных работать быстрее. Этот оператор позволяет удобно задать ветвление программы из одной точки в большое количество веток. То есть в основном применяется при множественных условиях проверки, когда проверяемых условий больше двух.

Структура оператора «Select Case».

Давайте посмотрим, как выглядит обобщённая структура оператора и разберём, что есть что (разные примеры частного использования кода будут приведены в конце статьи):

В качестве куска [Значение] можно вставить любую переменную или свойство, значение которой или которого Вы можете проверить. Можно также проверять значение конкретной ячейки. При этом работать можно не только с числами, но и с текстами. И даже с булевыми значениями TRUE/FALSE («Правда» и «Ложь»), о чем знают не все.

[Конкретное Значение] — это то, с чем сравнивается [Проверяемое Значение]. И, если одно удовлетворяет другому, то выполняется [Некоторое Действие]. Есть несколько вариантов записи для блока [Конкретное Значение]. Для текстовых и числовых значений можно записывать разные значения через запятую:

Для чисел можно выбирать диапазоны:

Также для чисел можно использовать логический оператор сравнения вместе с частицей «Is«:

Допустимо использовать и логические операторы, что позволит предусматривать сложнейшие случаи и проводить параллельные сравнения с другими переменными. Кроме оператора «Or», который заменяется обычной запятой.

[Некоторое Действие] может быть абсолютно любым. Если вы его пропускаете — то для данного случая программа будет бездействовать. «Case [Конкретное Значение]» вместе с частью [Некоторое Действие] складываются в один блок:

Таких блоков может быть любое количество, которое уложится в предельные размеры процедуры (она должна весить не более 64 килобайт). Полезно знать, что VBA просматривает соответствие [Конкретного Значения] и [Проверяемого Значения] вдоль по блокам сверху вниз. То есть, у Вас может быть два блока с одинаковым «Case«, но выполнится только тот, который будет раньше найден программой при просмотре кода сверху вниз.

Case Else — это все другие случаи, которые не подошли ни под одно другое [Конкретное Значение] во всех блоках оператора «Select Case«. Если блок «Case Else» отсутствует и ни один другой блок не подошёл, то программа делает логичное «ничего». Case Else должен быть последним проверяемым случаем среди всех блоков проверки в операторе. После него других блоков быть не должно, иначе получим синтаксическую ошибку «Case without Select Case«.

В конце оператора должен стоять «End Select«, который служит «точкой» в «предложении» оператора.

Примеры использования.

Рассмотрим несколько примеров использования кода и начнём с самого простого. В первом примере в зависимости от значения Х выводится сообщение.

Второй пример показывает некоторые виды записи проверяемого значения. В зависимости от количества листов в книге с макросом выводится разное сообщение. Обратите внимание, что если листов в книге 7, то первым сработает “Case 7”, хотя условие “Case 5 to 12” тоже подходит, но стоит позже.

Третий пример ориентируется на булево значение TRUE или FALSE. Проверяется, виден или скрыт последний лист в текущей книге с макросом. С помощью двоеточия может заменяться перенос строки для получения более изящного кода.

Четвёртый пример показывает, что «Case» может ориентироваться и на другие переменные. В данном случае будем проверять равенство трёх переменных с помощью логического оператора «And»:

Пятый пример показывает, как через запятую в проверяемом значении для «Case» можно указать целый набор чисел. Допустим, есть некоторая функция и мы проверяем, может ли наше число в этой функции использоваться. По условию, нас устраивают числа в диапазоне от 5 (не включая 5) до минус бесконечности, от 12 до 15 включая концы и от 20 (включая 20) до плюс бесконечности.

Подводя черту, замечу, что оператор «Select Case» по структуре довольно прост и удобен в использовании. Он менее гибок по сравнению с «If … End», если по ходу проверок требуется менять проверяемое значение, но значительно выигрывает при разнообразных проверках одного и того же выражения. Для чего собственно и был создан.

Источник

Оператор Select Case

Выполняет несколько групп операторов в зависимости от значения выражения.

Синтаксис

Выборвыражения для тестирования варианта
[ Caseexpressionlist-n [ statements-n ]]
[ Case Else [ elsestatements ]]
End Select

Синтаксис оператора Select Case состоит из следующих частей:

Part Описание
выражение testexpression Обязательно. Любое числовое выражение или строковое выражение.
expressionlist-n Обязательный параметр, если используется оператор Case.

Разделенный список одной или нескольких из следующих форм: expression, expressionToexpression, Iscomparisonoperatorexpression.

Ключевое словоTo задает диапазон значений. Если вы используете ключевое слово To, то наименьшее значение должно быть указано до To.

Используйте ключевое слово Is с операторами сравнения (кроме Is и Like) для указания диапазона значений. Если этот параметр не указан, автоматически вставляется ключевое слово Is.

statements-n Необязательный параметр. Одна или несколько инструкций, выполняемых, если выражение testexpression соответствует любой части expressionlist-n.
elsestatements Необязательный параметр. Один или несколько операторов, которые выполняются, если testexpression не соответствует какому-либо из выражений Case.

Замечания

Если выражение testexpression соответствует любому выражениюсписка выраженийcase, операторы, следующие за этим предложением Case, выполняются до следующего предложения Case или до последнего предложения до end select. Затем контроль передается оператору после End Select. Если testexpression совпадает с выражением expressionlist в нескольких предложениях Case, выполняются только операторы после первого совпадения.

Предложение Case Else используется для указания того, что выражения elsestatements выполняются, если не обнаружено совпадение между testexpression и expressionlist в других предложениях Case. Хотя это необязательно, рекомендуется использовать оператор Case Else в блоке Select Case для обработки непредвиденных значений testexpression. Если список выраженийcase не соответствует testexpression и оператор Case Else отсутствует, выполнение продолжается в инструкции End Select.

Используйте несколько выражений или диапазонов в каждом предложении Case . Например, допустима следующая строка.

Оператор сравнения Is — не то же самое, что ключевое слово Is, используемое в операторе Select Case.

Вы также можете указать диапазоны и несколько выражений для строк символов. В следующем примере case сопоставляет строки, которые точно равны , строки, которые находятся everything между nuts и soup в алфавитном порядке, и текущее значение TestItem :

Операторы Select Case могут быть вложенными. Каждый вложенный оператор Select Case должен иметь соответствующую инструкцию End Select .

Пример

В этом примере оператор Select Case используется для оценки значения переменной. Второе предложение Case содержит значение оцениваемой переменной, поэтому выполняется только связанный с ним оператор.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

  • Редакция Кодкампа

17 авг. 2022 г.
читать 1 мин


Оператор case — это тип оператора, который проходит через условия и возвращает значение при выполнении первого условия.

Самый простой способ реализовать оператор case в Excel — использовать функцию ПЕРЕКЛЮЧАТЕЛЬ() , которая использует следующий базовый синтаксис:

=SWITCH( A2 , "G", "Guard", "F", "Forward", "C", "Center", "None")

Эта конкретная функция просматривает ячейку A2 и возвращает следующее значение:

  • « На страже », если ячейка A2 содержит «G»
  • « Вперед », если ячейка A2 содержит «F»
  • « По центру », если ячейка A2 содержит «C»
  • « Нет », если ячейка A2 не содержит ни одного из предыдущих значений.

В следующем примере показано, как использовать эту функцию на практике.

Пример: оператор Case в Excel

Предположим, у нас есть следующий список баскетбольных позиций:

Мы будем использовать следующую функцию SWITCH() , чтобы вернуть определенное имя позиции в столбце B на основе значения в столбце A:

=SWITCH( A2 , "G", "Guard", "F", "Forward", "C", "Center", "None")

Мы введем эту формулу в ячейку B2 , а затем скопируем и вставим ее в каждую оставшуюся ячейку в столбце B:

оператор case в Excel

Обратите внимание, что эта формула возвращает следующие значения в столбце B:

  • « Guard », если столбец A содержит «G»
  • « Вперед », если столбец A содержит «F»
  • « По центру », если столбец A содержит «C»
  • « Нет », если столбец A не содержит ни одного из предыдущих значений.

Обратите внимание, что последнее значение в столбце B возвращает значение « Нет », поскольку мы не указали конкретное значение для возврата «Z» в формуле.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в Excel:

Excel: как найти уникальные значения из нескольких столбцов
Excel: как сопоставить два столбца и вернуть третий

Написано

Редакция Кодкампа

Замечательно! Вы успешно подписались.

Добро пожаловать обратно! Вы успешно вошли

Вы успешно подписались на кодкамп.

Срок действия вашей ссылки истек.

Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.

Успех! Ваша платежная информация обновлена.

Ваша платежная информация не была обновлена.

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Еще…Меньше

Функция ПЕРЕКЛЮЧ вычисляет значение (которое называют выражением) на основе списка значений и возвращает результат, соответствующий первому совпадающему значению. Если совпадения не обнаружены, может быть возвращено необязательное стандартное значение.

Синтаксис

SWITCH(выражение;значение1;результат1;[по_умолчанию или значение2;результат2];…[по_умолчанию или значение3;результат3])

Аргумент

Описание

выражение

(обязательно)

выражение — это значение (например, число, дата или текст), которое сравнивается со значениями значение1…значение126.

значение1…значение126

значениеN — это значение, с которым сравнивается выражение.

результат1…результат126

результатN — это значение, возвращаемое, если аргумент значениеN совпадает с выражением. Значение результатN необходимо задать для каждого аргумента значениеN .

по умолчанию

(необязательно)

Значение, возвращаемое, если совпадения выражения со значениями значение1… значение126 не обнаружены. Аргумент по_умолчанию можно быстро найти, поскольку для него не задается соответствующее значение результатN (см. примеры). Значение по_умолчанию должно быть последним в функции.

Поскольку у функций не может быть больше 254 аргументов, можно использовать до 126 пар аргументов значениеN и результатN.

Обзор

Самая простая функция ПЕРЕКЛЮЧ имеет такую структуру:

  • =ПЕРЕКЛЮЧ(значение для переключения;значение, которое должно совпасть1…[2–126];значение, возвращаемое при совпадении1…[2–126];значение, возвращаемое при отсутствии совпадений)

В ней можно вычислить до 126 совпадающих значений и результатов.

Рассмотрим формулу:

Описание аргументов функции ПЕРЕКЛЮЧ

  1. Значение для переключения? В данном случае значение ДЕНЬНЕД(A2) равно 2.

  2. Какое значение должно совпасть? В данном случае — 1, 2 и 3.

  3. Какой результат должен быть возвращен при совпадении? В данном случае: «воскресенье» для значения 1, «понедельник» для значения 2 и «вторник» для значения 3.

  4. Стандартное значение, возвращаемое при отсутствии совпадений. В данном случае — текст «совпадения отсутствуют».

    Примечание: Если совпадающих значений нет и аргумент по умолчанию не указан, функция ПЕРЕКЛЮЧ возвращает ошибку #Н/Д!.

Примеры

Вы можете проверить, как работает функция ПЕРЕКЛЮЧ, скопировав образец данных из следующей таблицы и вставив его в ячейку A1 нового листа Excel. Если результаты формул не отображаются, выделите формулы и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Пример

Значение

Формула

Результат

2

=ПЕРЕКЛЮЧ(ДЕНЬНЕД(A2);1;»воскресенье»;2;»понедельник»;3;»вторник»;»совпадения отсутствуют»)

Поскольку в ячейке A2 указано значение 2 и аргумент «результат», соответствующий значению 2, — это «понедельник», функция ПЕРЕКЛЮЧ возвращает значение «понедельник».

99

=ПЕРЕКЛЮЧ(A3;1;»воскресенье»;2;»понедельник»;3;»вторник»)

Поскольку совпадения отсутствуют и аргумент иначе не указан, функция ПЕРЕКЛЮЧ возвращает значение #Н/Д!.

99

=ПЕРЕКЛЮЧ(A4;1;»воскресенье»;2;»понедельник»;3;»вторник»;»совпадения отсутствуют»)

совпадения отсутствуют

2

=ПЕРЕКЛЮЧ(A5;1;»воскресенье»;7;»суббота»;»день недели»)

день недели

3

=ПЕРЕКЛЮЧ(A6;1;»воскресенье»;2;»понедельник»;3;»вторник»;»совпадения отсутствуют»)

вторник

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Функция ВПР

Функция ВЫБОР

Функция ЕСЛИ

Функция УСЛОВИЯ

Общие сведения о формулах в Excel

Рекомендации, позволяющие избежать появления неработающих формул

Поиск ошибок в формулах

Сочетания клавиш и горячие клавиши в Excel

Логические функции (справочник)

Функции Excel (по алфавиту)

Функции Excel (по категориям)

Нужна дополнительная помощь?

 

Здравствуйте.  
В одном из кодов, мне посоветовали применить конструкцию Select Case.  
Подскажите или покажите на небольшом примере, как применить конструкцию Select Case, так как с этой проверкой не знаком.  
Условие:  
“Если” в ячейки [n1] меняется свойство Value, “Затем” в ComboBox изменяется свойство RowSource, и так далее.
‘…  
“Если” в TextBox свойство Value=”” “Затем” в ComboBox свойство Value=”” “Еще” ComboBox свойство Value=[z1].Value

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

А в справку глянуть? Там и пример:  

  Dim Number  
Number = 8    ‘ Initialize variable.  
Select Case Number    ‘ Evaluate Number.  
Case 1 To 5    ‘ Number between 1 and 5, inclusive.  
   Debug.Print «Between 1 and 5»  
‘ The following is the only Case clause that evaluates to True.  
Case 6, 7, 8    ‘ Number between 6 and 8.  
   Debug.Print «Between 6 and 8»  
Case 9 To 10    ‘ Number is 9 or 10.  
Debug.Print «Greater than 8»  
Case Else    ‘ Other values.  
   Debug.Print «Not between 1 and 10»  
End Select

Я сам — дурнее всякого примера! …

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Это в справке такой пример?  
Интересно… А если вдруг нумбер дробный получился? :)

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

 

Ничего не понял  
На моем примере нельзя показать  

          If [N1].Value = «a» Then ComboBox.RowSource = «=$H$17:$H$20»
If [N1].Value = «b» Then ComboBox.RowSource = «=$H$22:$H$25»
If [N1].Value = «c» Then ComboBox.RowSource = «=$H$27:$H$27»
‘…  
If TextBox.Value = «» Then .ComboBox.Value = «» Else ComboBox.Value = [z1].Value

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Select Case [N1].Value ‘ Evaluate Number.
   Case «a»  
       ComboBox.RowSource = «=$H$17:$H$20»  
   Case «b»  
       ComboBox.RowSource = «=$H$22:$H$25»  
   Case «c»  
       ComboBox.RowSource = «=$H$27:$H$27»  
   End Select  
   ‘…  
   If TextBox.Value = «» Then .ComboBox.Value = «» Else ComboBox.Value = [z1].Value

    86677

Я сам — дурнее всякого примера! …

 

{quote}{login=KuklP}{date=30.08.2010 10:35}{thema=}{post}Select Case [N1].Value ‘ Evaluate Number.
   Case «a»  
       ComboBox.RowSource = «=$H$17:$H$20»  
   Case «b»  
       ComboBox.RowSource = «=$H$22:$H$25»  
   Case «c»  
       ComboBox.RowSource = «=$H$27:$H$27»  
   End Select  
   ‘…  
   If TextBox.Value = «» Then .ComboBox.Value = «» Else ComboBox.Value = [z1].Value

    86677{/post}{/quote}  
Теперь понял. Хотя не пойму преимущества данной конструкции.  
То что код более уплатненный?

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

{quote}{login=Hugo}{date=30.08.2010 10:21}{thema=}{post}Например, на 8,5 врёт…{/post}{/quote} на 8,5 другое условие надо.  
Case 5 To 9    ‘ Number between 5 and 9.  
   Debug.Print «Between 5 and 9»

Я сам — дурнее всякого примера! …

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Да это так, ремарка… Могли бы в примере указать, что код рассчитан на целые числа.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

{quote}{login=segail}{date=30.08.2010 10:39}{thema=Re: }{post}{quote}  
Теперь понял. Хотя не пойму преимущества данной конструкции.  
То что код более уплатненный?{/post}{/quote} Кому как…

Я сам — дурнее всякого примера! …

 

Alex_ST

Пользователь

Сообщений: 2746
Регистрация: 22.12.2012

На лицо ужасный, добрый внутри

{quote}{login=segail}{date=30.08.2010 10:39}{thema=Re: }{post}  
… не пойму преимущества данной конструкции…{/post}{/quote}  
ИМХО, при большом числе анализируемух вариантов конструкция Select Case… Case…Case…End Select просто более наглядна и удобочитаема чем If…Else If…If…End If  
Хотя, могут быть, конечно, и какие-то тонкости-различия.  
Сам, например, только недавно узнал, что IIf, оказывается отличается от If и не всегда его заменяет (в IIf проверяется присутствие всех аргументов и если какого-нибудь из них нет, то выдаётся ошибка, а в If аргументы проверяются по очереди в порядке перечисления)

С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!)
<#0>

 
 

Сила этого оператора в использовании списка условий, To и Is:  

  Case 1, 2, 5 To 7, Is >= 10

 

Ага, а еще у этого оператора есть такое применение:  

  Select Case True  
Case 1=2: Msgbox «Бред»  
Case [N1]=»a»: ComboBox.RowSource = «=$H$17:$H$20»
Case VarType(Number)=5: Msgbox «Double»  
End Select

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

{quote}{login=The_Prist}{date=30.08.2010 10:43}{thema=Re: Re: }{post}Преимущество в том, что код получается быстрее, т.к. при первом же совпадении условия конструкция завершает свою проверку…{/post}{/quote}  
К сожалению, в VB и VBA применение select case медленнее, чем If-Then-Else.  
Но на С это (было) быстрее.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=Alex_ST}{date=30.08.2010 10:52}{thema=Re: Re: }{post}{quote}{login=segail}{date=30.08.2010 10:39}{thema=Re: }{post}{/post}{/quote}  
ИМХО, при большом числе анализируемух вариантов конструкция Select Case… Case…Case…End Select просто более наглядна и удобочитаема чем If…Else If…If…End If{/post}{/quote}  
Алекс, а вот конструкция типа  
If    
…  
ElseIf  
…  
ElseIf  
…  
Else  
End If  
Тоже неплохо читается. :-)

 

Tikr

Пользователь

Сообщений: 69
Регистрация: 01.01.1970

Tikr

Уважаемые ГУРУ и просто любители EXCEL помогите разобраться в макросе чето не идет  
Пример прилагается!)

 

k61

Пользователь

Сообщений: 2441
Регистрация: 21.12.2012

Sub new_()  
Dim g As Variant  
g = ActiveCell.Offset(0, -8)  
 For Row = 1 To 40  
   Select Case IsNumeric(g)  
   Case False  
   ActiveCell.FormulaR1C1 = «=(RC[-8]+RC[-8])»
   Case Else  
   ActiveCell = «»  
   End Select  
   ActiveCell.Offset(1, 0).Select  
 Next Row  
End Sub  
P.S. зачем складывать текст?

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Tikr, чтоб заработало, можно и так изменить:  
Select Case True  
Но вообще весь код логически не правильный…  
И зачем складывать текст, и зачем 40 раз проделывать уже сделанную работу? Я о проверке…

 

k61

Пользователь

Сообщений: 2441
Регистрация: 21.12.2012

В код листа.  
Sub ttt()  
шапка = Cells(1, 11) ‘на всякий случай мумифицируем шапку  
With Columns(3)  
.SpecialCells(xlCellTypeConstants, xlTextValues).Offset(0, 8) = _  
«=(RC[-8]+RC[-8])»
End With  
Cells(1, 11) = шапка  ‘вернём шапку  
End Sub

 

Tikr

Пользователь

Сообщений: 69
Регистрация: 01.01.1970

Tikr

Спасибо за ответы!!  
Только у меня немного не получается!)  
я не буду складывать текст это я для примера сделал, оригинале бы состаял из другие формулы  
В идеале я бы хотел получить чтобы было два case условия (два разных слова) в диапозоне ячеек и уже согласно этим двум условиям вставлялись бы определенные формулы по ячейкам  
В примере к сожаление получается всего одно условие, и формула одна.))

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Ваш пример вообще не правильно работает — 40 раз проверяет одну первую ячейку.  
А на Select Case True как раз легко построить такую проверку, как Вам нужно.

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Sub new_2()  
   Dim g As Variant, r&  

     For r = 2 To 21  
       g = Cells(r, 3).Value  
       Select Case True  
       Case IsNumeric(g)  
           Cells(r, 11).FormulaR1C1 = «=(RC[-8]+RC[-8])»
       Case g = «Не определено»  
           Cells(r, 11) = «»  
       End Select  
   Next r  
End Sub

 

В данном случае с If короче и проще, ИМХО:  

  Sub new_3()  
Dim g As Variant, r&  

  For r = 2 To 21  
   g = Cells(r, 3).Value  
   If IsNumeric(g) Then  
       Cells(r, 11).FormulaR1C1 = «=RC[-8]+RC[-8]»
   ElseIf g = «Не определено» Then  
       Cells(r, 11) = «»  
   End If  
Next r  
End Sub

 

Tikr

Пользователь

Сообщений: 69
Регистрация: 01.01.1970

Tikr

Спасибо большое друзья за старания  
Пришлось немного поработать над текстом и всё заработало    
Правда надо еще время что доработать до автоматизма  
И я еще понимаю что еще мало что поминаю, ну не че формулы я раньше тоже плохо знал!)

 

Tikr

Пользователь

Сообщений: 69
Регистрация: 01.01.1970

Tikr

Еще вопросик))  
Может ли Case искать различное положение слов букв типа «а*с*», «сми*», «?ли?» а то пробую различные эти комбинации, а они не идут))  
Если да то как правильно эти комбинации надо писать?  
А если нет чем это можно заменить попроще, чтобы код несложный!? :)

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

#27

24.11.2011 16:58:10

Sub tt()  
   Dim s  

     For Each s In Array(«аfggfсfgj», «sfdfdhfh», «смиапрар»)  
       Select Case True  
       Case s Like «а*с*»: MsgBox s & » = а*с*»  
       Case s Like «сми*»: MsgBox s & » = сми*»  
       Case Else: MsgBox s & » = Else»  
       End Select  
   Next  

  End Sub

Понравилась статья? Поделить с друзьями:
  • Excel формулы 0 или пусто
  • Excel формулу с выпадающего списка ячейки
  • Excel формулу изменить шрифт в формуле
  • Excel формулу в число для копирования
  • Excel формуле если двойное условие