Съдържание
В тази статия ще ви покажа как можете да анализирате ситуацията в Excel. VBA ако дадена клетка съдържа стойност. Ще се научите да анализирате ситуацията както за всяка стойност, така и за конкретна стойност.
Анализ на Excel VBA: Ако клетката съдържа стойност тогава (бърз преглед)
Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo appeared in Physics exam." End If End Sub
Изтегляне на работна тетрадка за практика
Изтеглете тази учебна тетрадка, за да се упражнявате, докато четете тази статия.
VBA Ако клетката съдържа стойност Then.xlsmАнализ на Excel VBA: Ако клетката съдържа стойност, върнете резултатите (анализ стъпка по стъпка)
Тук имаме набор от данни с оценките на някои ученици по физика, химия и математика в училище, наречено детска градина "Слънчоглед".
Празните клетки означават, че студентът не се е явил, т.е. отсъствал е на този конкретен изпит. Сега нека анализираме ситуацията, дали дадена клетка съдържа стойност или не, с този набор от данни.
⧪ Стъпка 1: Деклариране на клетката
Първо трябва да декларираме клетката, чиято стойност искаме да анализираме. Нека анализираме дали Дженифър Марло се е явила на изпита по физика или не.
Затова трябва да проверим дали клетката C12 съдържа стойност или не.
За да направим това, първо трябва да декларираме клетка C12 .
Редът от код за постигане на тази цел е:
Задайте Cell = Range("C12").Cells(1, 1)
⧪ Стъпка 2: Проверка дали клетката съдържа стойност (включително конкретна стойност)
След това трябва да проверим дали клетката съдържа стойност или не. Ако условието . Редът код ще бъде:
Ако стойността на клетката е "" Тогава
Този код ще бъде изпълнен, ако клетката съдържа някаква стойност. За да проверите дадена стойност (например дали съдържа 100 или не), използвайте тази конкретна стойност с Равно на символ.
Ако стойността на клетката е "" Тогава
⧪ Стъпка 3: Разпределяне на задачата
След това трябва да зададете задача, която ще се изпълни, ако клетката съдържа стойност (или определена стойност).
Тук искаме да покажем съобщението "Дженифър Марло се яви на изпит по физика." . Така че редът код ще бъде:
MsgBox "Jennifer Marlo се яви на изпит по физика."
⧪ Стъпка 4: Приключване на блока If
Накрая трябва да обявите края на блока If.
End If
Така че пълният VBA кодът ще бъде:
⧭ Код VBA:
Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo appeared in Physics exam." End If End Sub
⧭ Изход:
Изпълнете този код, като щракнете върху Изпълнение на Sub/UserForm в лентата с инструменти.
Ще се покаже съобщението "Дженифър Марло се яви на изпит по физика." като клетка C12 съдържа стойност от 50 .
Примери, включващи Ако клетката съдържа стойност, тогава определен изход с Excel VBA
Научихме се да анализираме дали дадена клетка съдържа стойност или не в VBA . Сега нека разгледаме няколко примера, за да изясним разбирането.
1. разработване на макропрограма за филтриране на стойност, ако съответната клетка съдържа някаква стойност, тогава в Excel VBA
Да разработим Macro за филтриране на учениците, които са се явили на всеки от изпитите.
Това означава, че трябва да проверим клетките, съдържащи оценките на всеки от предметите, и да видим дали те съдържат стойност или не.
Ако е така, трябва да определим името на съответния ученик.
Пълният VBA кодът за постигане на тази цел ще бъде:
⧭ Код VBA:
Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = 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(Starting_Cell).Cells(Count, i - 1) = Selection.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 2 Next i End Sub
⧭ Изход:
Изберете набора от данни (Включително Заглавия ) и изпълнете това Macro .
Първо, ще бъдете помолени да въведете референцията на първата клетка, в която искате да се филтрират данните. Аз въведох G3 .
След това щракнете върху OK . Ще получите имената на учениците, които са се явили на всеки от изпитите (вкл. Заглавия ) в нов набор от данни, започващ от клетката G3 .
2. създаване на дефинирана от потребителя функция за сортиране на стойност, ако съответната клетка съдържа определена стойност, в Excel VBA
Сега ще създадем дефинирана от потребителя функция, която ще връща имената на учениците, получили определена оценка по всеки от предметите.
Процедурата е почти същата като тази по-горе. Трябва да проверим клетките, съдържащи оценките на всеки от предметите, и да видим дали те са равни на определена стойност или не.
Ако е така, ще върнем името на съответния ученик.
Сайтът VBA кодът ще бъде:
⧭ Код VBA:
Функция 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
⧭ Изход:
Кодът създава функция, наречена Cells_with_Values която приема два аргумента, а именно Обхват и Стойност .
Нека да открием учениците, които са получили 100 точки по всеки от предметите, като използваме тази функция.
Изберете диапазон от клетки във вашия работен лист и въведете тази функция в първата клетка на диапазона:
=Cells_with_Values(B3:E13,100)
[Тук B3:E3 е моят набор от данни (включително Заглавия ) и 100 това е моята съвпадаща стойност. Вие използвайте вашата.]
След това натиснете CTRL + SHIFT + ENTER ( Формула на масива ). Той ще върне масив, състоящ се от имената на учениците, които са получили 100 точки по всеки предмет, включително Заглавия .
3. разработване на потребителска форма за извличане на стойност, ако съответната клетка съдържа някаква стойност (или определена стойност) в Excel VBA
Накрая ще разработим Потребителски формуляр за извличане на имената на учениците, които са се явили (или са получили определени оценки) на някои конкретни изпити.
⧪ Стъпка 1: Отваряне на потребителската форма
Отидете в Insert> UserForm опция в VBA редактор, за да отворите нов Потребителски формуляр . Нов Потребителски формуляр наречен UserForm1 ще бъдат отворени.
⧪ Стъпка 2: Плъзгане на инструменти към потребителската форма
Освен това Потребителски формуляр , ще получите Кутия с инструменти . Преместете курсора върху Кутия с инструменти и плъзнете 4 етикета (Label1, Label2, Label3, Label4) и 3 списъчни полета (ListBox1, ListBox2, ListBox3) и TextBox (TextBox1) в правоъгълна форма над Потребителски формуляр .
След това плъзнете друг Етикет (Label5) и TextBox (TextBox2) в долния ляв ъгъл на Потребителски формуляр .
Накрая плъзнете CommandButton (CommandButton1) в долния десен ъгъл.
Промяна на дисплеите на Етикети към Колона за търсене , Колона за връщане , Всяка стойност или конкретна стойност , Стойност, и Начална клетка.
Също така променете показването на CommandButton1 към OK .
⧪ Стъпка 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 "Select at Least One Lookup Column.", 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 "Select One Return Column.", 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 "Select Either Any Value or Specific Value.", vbExclamation Exit For End If Next j Count3 = 2 Count2 = Count2+ 1 End If Next i Exit Sub Съобщение: MsgBox "Enter a Valid Cell Reference as the Starting Cell.", vbExclamation End Sub
⧪ Стъпка 5: Написване на код за стартиране на UserForm
Накрая вмъкнете нов Модул от Лентата с инструменти VBA и въведете следния код.
Sub Run_UserForm() UserForm1.Caption = "Filtering Cells that Contain Values" 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 "Any Value" UserForm1.ListBox3.AddItem "Specific value" UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False Load UserForm1 UserForm1.Show End Sub
⧪ Стъпка 6: Стартиране на потребителската форма (крайният резултат)
Вашият Потребителски формуляр вече е готов за използване. Изберете набора от данни от работния лист ( B3:E13 тук) (Включително Заглавия ) и стартирайте Macro наречен Run_UserForm .
Сайтът Потребителски формуляр ще бъдат заредени в работния лист. От Колона за търсене избрах Физика и Математика , защото искам да получа имената на учениците, които са се появили в Физика и Математика изпити.
От Колона за връщане избрах Име на ученика , защото искам да получа имената на учениците.
И от Всяка стойност или специфична стойност избрах Всяка стойност .
Накрая, в Начална клетка кутия, сложих G3 .
След това щракнете върху OK . Ще получите имената на учениците, които са се появили в Физика и Математика изпити, започващи от клетка G3 .
Ако сте избрали Специфична стойност от Всяка стойност или специфична стойност маса, ще получите друга TextBox за да въведете конкретната стойност.
Тук съм въвел 100 .
Кликнете върху OK . И ще получите учениците, които са получили 100 в Физика и Химия .
Нещата, които трябва да запомните
Използвахме двумерен масив, за да върнем имената на учениците в Дефинирана от потребителя функция описани в пример 2 .