Table of contents
在这篇文章中,我将向你展示如何在Excel中分析这种情况 VBA 你将学会分析任何数值和某一特定数值的情况。
Excel VBA分析:如果单元格包含一个值,那么(快速查看)
Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo出现在物理考试中。" End If End Sub
下载实践工作手册
下载这本练习手册,在阅读本文时进行练习。
VBA If Cell Contains Value Then.xlsmExcel VBA分析:如果单元格中包含一个值,则返回输出结果(分步分析)
这里我们有一个数据集,其中有一些学生在一所名为向日葵幼儿园的物理、化学和数学方面的分数。
空白单元格意味着该学生没有出现,也就是说,在该次考试中缺席。 现在让我们用这组数据分析一下,单元格是否包含一个值的情况。
⧪ 第一步:声明单元格
首先,我们必须声明我们要分析的单元格的值。 让我们分析一下Jennifer Marlo是否参加了物理考试。
因此,我们需要检查细胞是否 C12 包含一个值或不包含一个值。
要做到这一点,首先,我们必须声明单元格 C12 .
实现这一目标的代码行将是。
Set Cell = Range("C12").Cells(1, 1)
⧪ 第二步:检查单元格是否包含一个值(包括一个特定的值)。
接下来,我们要检查该单元格是否包含一个值。 我们将使用一个 如果条件 这一行代码将是。
如果Cell.Value "" 那么
如果该单元格包含任何值,该代码将被执行。 要检查一个值(例如,它是否包含100),使用该特定值的 等于 符号。
如果Cell.Value "" 那么
⧪ 步骤3:分配任务
然后你要设置一个任务,如果单元格包含一个值(或一个特定的值)就会被执行。
在这里,我们要显示的信息是 "珍妮弗-马洛出现在物理学考试中。" .所以这行代码将是。
MsgBox "Jennifer Marlo出现在物理考试中。"
⧪ 第四步:结束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中开发一个宏来过滤掉一个值 如果对应的单元格包含任何值,那么
让我们制定一个 宏观 以过滤出参加每场考试的学生。
也就是说,我们必须检查包含每个科目的分数的单元格,看它们是否包含一个值。
如果他们这样做了,那么我们就必须整理出相应的学生的名字。
完整的 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
⧭ 输出。
选择数据集(包括 标题 )并运行这个 宏观 .
首先,你会被要求输入你想要过滤的数据的第一个单元格的引用。 我输入了 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
⧭ 输出。
该代码创建了一个名为 有值的单元格 它需要两个参数,一个是 范围 和一个 价值 .
让我们用这个函数找出各科得100分的学生。
在你的工作表中选择一个单元格区域,在该区域的第一个单元格中输入这个函数。
=Cells_with_Values(B3:E13,100)
[这里 B3:E3 是我的数据集(包括 标题 )和 100 是我的匹配值,你用你的] 。
然后按 ctrl + shift + enter ( 阵列公式 )。 它将返回一个数组,其中包括各科成绩为100分的学生姓名,包括 标题 .
3.在Excel VBA中开发一个用户表格,在对应的单元格中包含任何数值(或特定的数值)时提取出一个数值
最后,我们将制定一个 用户表格 以提取在某些特定考试中出现(或得到特定分数)的学生姓名。
⧪ 步骤1:打开用户表格
转到 Insert> UserForm 中的选项。 VBA 编辑器来打开一个新的 用户表格 一个新的 用户表格 叫做 用户表格1 将会被打开。
⧪ 第2步:将工具拖到用户表格中
除了 用户表格 ,你会得到 工具箱 将你的光标移到 工具箱 并拖动 4个标签(Label1, Label2, Label3, Label4)。 和 3个ListBoxes(ListBox1, ListBox2, ListBox3)。 和一个 文本框 (TextBox1) 呈长方形,在 用户表格 .
然后拖动另一个 标签 (Label5) 和一个 文本框 (TextBox2) 到左下角的 用户表格 .
最后,拖动一个 命令按钮 (CommandButton1) 到右下角。
改动显示的 标签 至 查询栏 , 返回栏目 , 任何价值或特定价值 , 价值。 和 起始细胞。
同时,改变显示的 命令按钮1 至 认可 .
⧪ 第三步:为ListBox3编写代码
双击 列表框3 . A 私人子程序 叫做 列表框3_点击 将打开,在那里输入以下代码。
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
⧪ 第四步:为CommandButton1编写代码
然后双击 命令按钮1 .另一个 私人子程序 叫做 命令按钮1_点击 将打开,在那里输入以下代码。
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 "Select One Return Column.", vbExclamation Exit Sub End If Count2 = 1 Count3 = 2 For i = 1 To Selection.Columns.Count 如果 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 Message: 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 对于i = 1 到Selection.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步:运行用户表格(最终输出)。
你的 用户表格 现在可以使用了。 从工作表中选择数据集( B3:E13 这里)(包括 标题 )并运行 宏观 叫做 运行_用户表格 .
ǞǞǞ 用户表格 将被加载到工作表中。 从 查询栏 表,我已经选择了 物理学 和 数学 ,因为我想得到出现在 "我的 "中的学生名字。 物理学 和 数学 考试。
从 返回栏目 表,我已经选择了 学生姓名 ,因为我想得到学生的名字。
而从 任何价值或特定价值 表,我已经选择了 任何价值 .
最后,在 起始细胞 盒子,我已经把 G3 .
然后点击 认可 你会得到出现在《中国青年报》上的学生的名字。 物理学 和 数学 从细胞开始的考试 G3 .
如果你选择了 具体价值 从 任何价值或特定价值 表,你会得到另一个 文本框 来输入具体数值。
我在这里输入了 100 .
点击 认可 而你会得到那些得到的学生。 100 在 物理学 和 化学 .
需要记住的事情
我们使用一个二维数组来返回学生的名字,在 用户定义的功能 例子中描述的 2 .