Excel VBA: якщо комірка містить значення, то повернути заданий результат

  • Поділитися Цим
Hugh West

У цій статті я покажу, як можна проаналізувати ситуацію в Excel VBA якщо комірка містить значення. Ви навчитеся аналізувати ситуацію як для будь-якого значення, так і для конкретного значення.

Аналіз Excel VBA: якщо комірка містить значення, то (Швидкий перегляд)

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Дженніфер Марло з'явилась на іспиті з фізики." End If End Sub 

Завантажити Практичний посібник

Завантажте цей практичний посібник, щоб потренуватися, поки ви читаєте цю статтю.

VBA If Cell Contains Value Then.xlsm

Аналіз Excel VBA: якщо комірка містить значення, то повернути вихідні дані (покроковий аналіз)

У нас є набір даних з оцінками деяких учнів з фізики, хімії та математики у школі під назвою "Дитячий садок "Соняшник".

Порожні клітинки означають, що студент не з'явився, тобто був відсутній на цьому конкретному іспиті. Тепер проаналізуємо ситуацію, чи містить клітинка значення чи ні, з цим набором даних.

⧪ Крок 1: Оголошення комірки

Спочатку потрібно оголосити комірку, значення якої ми хочемо проаналізувати. Проаналізуємо, чи з'явилася Дженніфер Марло на іспиті з фізики, чи ні.

Тому нам потрібно перевірити, чи є клітина C12 містить значення чи ні.

Для цього, по-перше, ми повинні задекларувати осередок C12 .

Для цього буде створено відповідний програмний код:

 Set Cell = Range("C12").Cells(1, 1) 

⧪ Крок 2: Перевірка, чи містить клітинка значення (у тому числі конкретне значення)

Далі нам потрібно перевірити, чи містить комірка значення чи ні. Ми виконаємо це за допомогою функції Якщо умова Рядок коду буде:

 If Cell.Value "" Then 

Цей код буде виконано, якщо комірка містить будь-яке значення. Щоб перевірити наявність значення (наприклад, чи містить вона 100 чи ні), використовуйте це конкретне значення з символом Дорівнює символ.

 If Cell.Value "" Then 

⧪ Крок 3: Постановка завдання

Потім потрібно налаштувати завдання, яке буде виконуватися, якщо комірка містить значення (або певне значення).

Тут ми хочемо вивести повідомлення "Дженніфер Марло з'явилася на іспиті з фізики". Так що рядок коду буде:

 MsgBox "Дженніфер Марло з'явилася на іспиті з фізики". 

⧪ Крок 4: Завершення роботи блоку If

Нарешті, ви повинні оголосити кінець блоку If.

 End If 

Таким чином, повна VBA код буде:

⧭ код VBA:

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Дженніфер Марло з'явилась на іспиті з фізики." End If End Sub 

⧭ Вихід:

Запустіть цей код, натиснувши на кнопку Виконати Sub/UserForm на панелі інструментів.

На екрані з'явиться повідомлення "Дженніфер Марло з'явилася на іспиті з фізики". як осередок C12 містить значення, що дорівнює 50 .

Приклади, що включають, якщо комірка містить значення, то вказаний висновок з Excel VBA

Ми навчилися аналізувати, чи містить комірка значення чи ні в VBA Тепер давайте розглянемо кілька прикладів, щоб прояснити це розуміння.

1. розробка макросу для відсіювання значення, якщо відповідна комірка містить будь-яке значення, в Excel VBA

Давайте розробимо Макрос відфільтрувати студентів, які з'явилися на кожному з іспитів.

Тобто, ми маємо перевірити комірки, в яких стоять позначки кожного з піддослідних, і подивитися, чи містять вони значення, чи ні.

Якщо так, то треба розібратися з прізвищем відповідного студента.

Повна версія VBA Код для цього буде:

⧭ код VBA:

 Sub Сортування_комірок_що_містять_значення() Початкова_комірка = InputBox("Введіть посилання на першу комірку відфільтрованих даних: ") For i = 2 To Selection.Columns.Count Range(Starting_Cell).Cells(1, i - 1) = Selection.Cells(1, i) Next i Count = 2 For i = 2 To Selection.Columns.Count For j = 2 To Selection.Rows.Count Set Cell = Selection.Cells(j, i) If Cell.Value "" ThenRange(Початкова_комірка).Cells(Count, i - 1) = Selection.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 2 Next i End Sub 

⧭ Вихід:

Виберіть набір даних (в т.ч. Заголовки ) і запустіть це Макрос .

Спочатку вам буде запропоновано ввести посилання на першу комірку, де ви хочете отримати відфільтровані дані. Я ввів G3 .

Потім натисніть ГАРАЗД. Ви отримаєте прізвища студентів, які з'явилися на кожному з іспитів (в т.ч. Заголовки ) у новому наборі даних, починаючи з комірки G3 .

2. створення користувацької функції для сортування значення, якщо відповідна комірка містить певне значення, то в Excel VBA

Тепер створимо користувацьку функцію, яка повертатиме прізвища студентів, що отримали певну оцінку з кожного з предметів.

Процедура майже така сама, як і в попередньому випадку: треба перевірити клітинки з оцінками кожного з піддослідних і подивитися, чи дорівнюють вони конкретному значенню, чи ні.

Якщо вони є, то ми повернемо прізвище відповідного студента.

На сьогоднішній день, на жаль, це не так. VBA код буде:

⧭ код VBA:

 Function Cells_with_Values(Rng As Range, Data As Variant) Dim Output() As Variant ReDim Output(Rng.Rows.Count, Rng.Columns.Count - 1) For i = 0 To Rng.Columns.Count - 2 Output(0, i) = Rng.Cells(1, i + 2) Next i Count = 1 For i = 2 To Rng.Columns.Count For j = 2 To Rng.Rows.Count Set Cell = Rng.Cells(j, i) If Cell.Value = Data Then Output(Count, i - 2) =Rng.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 1 Next i For i = LBound(Output, 1) To UBound(Output, 1) For j = LBound(Output, 2) To UBound(Output, 2) If Output(i, j) = 0 Then Output(i, j) = "" End If Next j Next i Cells_with_Values = Output End Function 

⧭ Вихід:

У коді створюється функція з іменем Комірки_зі_значеннями для цього потрібні два аргументи, a Діапазон і Значення .

Знайдемо за допомогою цієї функції учнів, які отримали 100 балів з кожного з предметів.

Виділіть діапазон комірок на робочому аркуші та введіть цю функцію в першу комірку діапазону:

=Cells_with_Values(B3:E13,100)

[Тут B3:E3 це мій набір даних (включаючи Заголовки ) та 100 це моє відповідне значення. Ти використовуй своє.]

Потім натисніть CTRL + SHIFT + ENTER ( Формула масиву Він поверне масив, що складається з прізвищ студентів, які отримали 100 балів з кожного предмету, включаючи Заголовки .

3. розробка користувацької форми для виведення значення, якщо відповідна комірка містить будь-яке значення (або певне значення) в Excel VBA

Нарешті, ми розробимо UserForm витягти прізвища студентів, які з'явилися (або отримали конкретні оцінки) на якихось конкретних іспитах.

⧪ Крок 1: Відкриття форми користувача

Перейдіть на сторінку Вставити> UserForm опція в VBA редактор, щоб відкрити новий UserForm Новий UserForm під назвою UserForm1 буде відкрито.

⧪ Крок 2: Перетягування інструментів на форму користувача

Крім того, в рамках проекту UserForm ви отримаєте Інструментарій Наведіть курсор на Інструментарій і перетягнути 4 етикетки (Label1, Label2, Label3, Label4) і 3 ListBox (ListBox1, ListBox2, ListBox3) і TextBox (TextBox1) в прямокутній формі над UserForm .

Потім перетягніть ще один Етикетка (Label5) і TextBox (TextBox2) до лівого нижнього кута UserForm .

Нарешті, перетягніть CommandButton (CommandButton1) у правому нижньому куті.

Змінити відображення на дисплеях Етикетки до Стовпчик пошуку , Зворотний стовпець , Будь-яке значення або конкретне значення , Цінність, і Стартова клітина.

Крім того, змінено відображення на екрані CommandButton1 до ГАРАЗД. .

⧪ Крок 3: Написання коду для ListBox3

Двічі натисніть на ListBox3 . A Приватна підпроцедура під назвою ListBox3_Click Відкриється вікно, в якому введіть наступний код.

 Private Sub ListBox3_Click() If UserForm1.ListBox3.Selected(0) = True Then UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False ElseIf UserForm1.ListBox3.Selected(1) = True Then UserForm1.Label4.Visible = True UserForm1.TextBox1.Visible = True End If End Sub 

⧪ Крок 4: Написання коду для командної кнопки CommandButton1

Потім двічі клацніть на CommandButton1 . ще один. Приватна підпроцедура під назвою CommandButton1_Click Відкриється вікно, в якому введіть наступний код.

 Private Sub CommandButton1_Click() On Error GoTo Message Starting_Cell = UserForm1.TextBox2.Text Count1 = 1 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then Range(Starting_Cell).Cells(1, Count1) = Selection.Cells(1, i) Count1 = Count1 + 1 End If Next i If Count1 = 1 Then MsgBox "Виділіть хоча б один стовпець пошуку.", vbExclamation ExitSub End If Data_Selected = 0 For i = 1 To Selection.Columns.Count If UserForm1.ListBox2.Selected(i - 1) = True Then Data_Selected = i Exit For End If Next i If Data_Selected = 0 Then MsgBox "Виберіть один стовпець повернення.", vbExclamation Exit Sub End If Count2 = 1 Count3 = 2 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then For j= 2 To Selection.Rows.Count Set Cell = Selection.Cells(j, i) If UserForm1.ListBox3.Selected(0) = True Then If Cell.Value "" Then Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If ElseIf UserForm1.ListBox3.Selected(1) = True ThenIf Cell.Value = UserForm1.TextBox1.Text Then Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If Else MsgBox "Виберіть або будь-яке значення, або конкретне.", vbExclamation Exit For End If Next j Count3 = 2 Count2 = Count2+ 1 End If Next i Exit Sub Повідомлення: MsgBox "Введіть дійсне посилання на комірку як початкову комірку.", vbExclamation End Sub 

⧪ Крок 5: Написання коду для запуску користувацької форми

Нарешті, вставити новий Модуль від Панель інструментів VBA і вставити туди наступний код.

 Sub Run_UserForm() UserForm1.Caption = "Фільтрація комірок, що містять значення" UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox3.BorderStyle = fmBorderStyleSingle UserForm1.ListBox3.ListStyle = fmListStyleOption For i = 1 ToSelection.Columns.Count UserForm1.ListBox1.AddItem Selection.Cells(1, i) UserForm1.ListBox2.AddItem Selection.Cells(1, i) Next i UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox3.AddItem "Будь-яке значення" UserForm1.ListBox3.AddItem "Конкретне значення" UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False Load UserForm1 UserForm1.Show End Sub 

⧪ Крок 6: Запуск форми користувача (кінцевий результат)

Твій UserForm тепер готовий до використання. Виберіть набір даних на робочому аркуші ( B3:E13 тут) (в т.ч. Заголовки ) і запустіть Макрос під назвою Run_UserForm .

На сьогоднішній день, на жаль, це не так. UserForm буде завантажено на робочий аркуш. З кнопки Стовпчик пошуку таблицю, я вибрав Фізика і Математика тому що я хочу отримати прізвища студентів, які з'явилися в Фізика і Математика іспити.

Від Зворотний стовпець таблицю, я вибрав Ім'я студента Тому що я хочу дізнатися імена студентів.

А з боку Будь-яке значення або конкретне значення таблицю, я вибрав Будь-яке значення .

Нарешті, в Стартова комірка Я поклав у коробку G3 .

Потім натисніть ГАРАЗД. Ви отримаєте імена студентів, які з'явилися на Фізика і Математика іспити, починаючи з камери G3 .

Якщо Ви обрали Питома вартість від Будь-яке значення або конкретне значення ви б отримали ще один стіл. TextBox для введення конкретного значення.

Тут я вписав 100 .

Натисніть ГАРАЗД. І ти отримаєш студентів, які отримали 100 в Фізика і Хімія .

Важливі моменти для запам'ятовування

Ми використовували двовимірний масив для повернення прізвищ студентів у Функція, що визначається користувачем описано на прикладі 2 .

Г’ю Вест — досвідчений тренер і аналітик Excel із понад 10-річним досвідом роботи в галузі. Він має ступінь бакалавра з бухгалтерського обліку та фінансів і ступінь магістра з ділового адміністрування. Г’ю має пристрасть до викладання та розробив унікальний підхід до викладання, який легко зрозуміти та дотримуватися. Його експертне знання Excel допомогло тисячам студентів і професіоналів у всьому світі вдосконалити свої навички та досягти успіху в кар’єрі. У своєму блозі Г’ю ділиться своїми знаннями зі світом, пропонуючи безкоштовні навчальні посібники з Excel та онлайн-навчання, щоб допомогти окремим особам і компаніям повністю розкрити свій потенціал.