Excel VBA:如果单元格中含有数值,则返回指定的输出结果

  • Share This
Hugh West

在这篇文章中,我将向你展示如何在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.xlsm

Excel 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 .

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.