在vba中理解excel单元格与range函数

在Excel中使用Range和Cells函数可能会非常混乱。下面是如何在VBA的帮助下以你可能从未想象过的方式使用它们...

Excel很强大。如果您经常使用它,您可能已经知道了许多使用公式或自动格式化的技巧,但是利用VBA中的单元格和范围函数,您可以将Excel分析提升到一个全新的水平。

excel-cells-vba

在VBA中使用Cells和Range函数的问题是,在高级阶段,大多数人很难理解这些函数实际上是如何工作的。使用它们会让人非常困惑。以下是你如何以你可能从未想象过的方式利用它们。

细胞的功能

“单元格”和“范围”函数允许您准确地告诉VBA脚本要在工作表上获取或放置数据的位置。两个单元格之间的主要区别是它们引用的内容。

单元格通常一次引用一个单元格,而Range一次引用一组单元格。此函数的格式为单元格(行、列)。

这将引用整个工作表中的每个单元格。这是Cells函数不引用单个单元格的一个示例:

Worksheets("Sheet1").Cells

这引用了第一行左侧的第三个单元格。单元格C1:

Worksheets("Sheet1").Cells(3)

以下代码引用单元格D15:

Worksheets("Sheet1").Cells(15,4)

如果您愿意,还可以使用“Cells(15,D)”引用单元格D15——您可以使用列字母。

使用列和单元格的数字引用单元格具有很大的灵活性,特别是使用脚本,这些脚本可以很快地循环通过大量单元格(并对它们执行计算)。我们将在下面更详细地讨论。

范围函数

在许多方面,Range函数比使用单元格功能强大得多,因为它允许您同时引用单个单元格或特定范围的单元格。您不会希望循环遍历Range函数,因为单元格的引用不是数字(除非您将cells函数嵌入其中)。

此函数的格式为范围(单元格#1,单元格ා2)。每个单元格可以用字母编号指定。

让我们看几个例子。

这里,range函数引用单元格A5:

Worksheets("Sheet1").Range("A5")

这里,range函数引用A1到E20之间的所有单元格:

Worksheets("Sheet1").Range("A1:E20")

如上所述,您不必使用数字字母单元格赋值。实际上,可以使用Range函数中的两个Cells函数来标识工作表上的范围,如下所示:

With Worksheets("Sheet1") .Range(.Cells(1, 1), _ .Cells(20, 5))End With

上面的代码引用的范围与range(“A1:E20”)函数所引用的范围相同。使用它的价值在于,它允许您使用循环编写动态处理范围的代码。

既然您了解了如何格式化单元格和范围函数,那么让我们深入了解如何在VBA代码中创造性地使用这些函数。

用cells函数处理数据

当您要在多个单元格区域中执行复杂公式时,Cells函数最有用。这些范围也可以存在于多张图纸中。

让我们举一个简单的例子。假设你管理一个由11人组成的销售团队,每个月你都想看看他们的表现。

你可能会有一张表,记录他们的销售额和销售量。

processing data - excel functi*** vba

在表2中,您可以跟踪公司客户过去30天的反馈评级。

processing data - excel functi*** vba

如果要使用两张表中的值计算第一张表上的奖金,有多种方法可以做到这一点。您可以在第一个单元格中编写一个公式,使用两张工作表上的数据执行计算,然后将其向下拖动。那就行了。

另一种方法是创建VBA脚本,您可以在打开工作表时触发运行该脚本,也可以通过工作表上的命令按钮触发运行该脚本,以便控制它的计算时间。您可以使用VBA脚本从外部文件中提取所有销售数据。

那么为什么不在同一个脚本中触发奖金列的计算呢?

细胞起作用

如果以前从未在Excel中编写过VBA,则需要启用“开发人员”菜单项。为此,请转到“文件”>“选项”。单击“自定义功能区”。最后,从左窗格中选择Developer,将其添加到右窗格,并确保选中复选框。

Microsoft Excel customize ribbon

现在,当您单击OK并返回到主工作表时,您将看到Developer菜单选项。

可以使用“**”菜单**命令按钮,也可以单击“查看代码”开始编码。

Microsoft Excel view code

在本例中,我们将使脚本在每次打开工作簿时运行。为此,只需单击“开发人员”菜单中的“查看代码”,然后将以下新函数粘贴到“代码”窗口中。

Private Sub Workbook_Open() End Sub

您的代码窗口将如下所示。

excel functi*** vba code

现在您可以编写代码来处理计算了。使用单个循环,您可以单步遍历所有11个雇员,并使用Cells函数拉入计算所需的三个变量。

记住Cells函数有行和列作为参数来标识每个单元格。我们将行设为“x”,使用一个数字来请求每列的数据。行数是雇员数,所以这是从1到11。列标识符为2表示销售计数,3表示销售量,2来自第2页表示反馈分数。

最后的计算使用以下百分比加起来总奖金分数的100%。它是基于一个理想的销售计数是50,销售额为50000美元,反馈分数为10。

  • (销售数量/50)x 0.4
  • (销售额/50000)x 0.5
  • (反馈得分/10)x 0.1

这种简单的方法可以为销售人员提供加权奖金。50分,5万美元,10分,他们就可以得到当月的最高奖金。然而,任何因素下的完美都会减少奖金。任何比理想更好的东西都会增加奖金。

现在让我们看看如何在一个非常简单、简短的VBA脚本中实现所有逻辑:

Private Sub Workbook_Open()For x = 2 To 12Worksheets("Sheet1").Cells(x, 4) = (Worksheets("Sheet1").Cells(x, 2).Value / 50) * 0.4 _ + (Worksheets("Sheet1").Cells(x, 3).Value / 50000) * 0.5 _ + (Worksheets("Sheet2").Cells(x, 2).Value / 10) * 0.1 _Next xEnd Sub

这就是这个脚本的输出。

excel functi*** vba output

如果您想让奖金列显示实际的美元奖金而不是百分比,您可以将其乘以最大奖金金额。更好的方法是,将该数量放在另一个工作表的单元格中,并在代码中引用它。这将使以后更容易更改值,而无需编辑代码。

Cells函数的妙处在于,您可以构建一些非常有创意的逻辑,从多个不同表的多个单元格中提取数据,并用它们执行一些非常复杂的计算。

您可以使用cells函数对单元格执行各种操作,例如清除单元格、更改字体格式等等。

要进一步了解您可以做的一切,请查看Cells对象的microsoftsdn页面。

使用范围函数格式化单元格

一次循环通过多个细胞,细胞的功能是完美的。但是如果你想一次将某个东西应用到整个细胞范围,那么range函数的效率要高得多。

如果满足某些条件,可以使用脚本格式化一系列单元格。

formatting cells - excel functi*** vba

例如,假设所有销售员工的销售总量总数超过40万美元,那么您希望在“奖金”栏中以绿色突出显示所有单元格,以表示团队已获得额外的团队奖金。

让我们看看如何使用IF语句来实现这一点。

Private Sub Workbook_Open()If Worksheets("Sheet1").Cells(13, 3).Value > 400000 Then ActiveSheet.Range("D2:D12").Interior.ColorIndex = 4End IfEnd Sub

运行时,如果单元格超出团队目标,则范围内的所有单元格都将填充为绿色。

这只是使用Range函数可以对多组单元格执行的许多操作的一个简单示例。您可以做的其他事情包括:

  • 在小组周围画一个轮廓
  • 检查单元格区域内文本的拼写
  • 清除、复制或剪切单元格
  • 使用“Find”方法搜索范围
  • 更多

确保阅读Range对象的microsoftsdn页面以查看所有可能性。

将excel带到下一个级别

既然您了解了单元格和Range函数之间的区别,现在就可以将VBA脚本提升到下一个级别了。Dann关于在Excel中使用计数和添加函数的文章将允许您构建更高级的脚本,这些脚本可以非常快速地在所有数据集中累积值。

如果您刚刚开始使用Excel中的VBA,请不要忘记我们也为您提供了一个极好的excelvba入门指南。

  • 发表于 2021-03-25 12:55
  • 阅读 ( 471 )
  • 分类:编程

你可能感兴趣的文章

如何构建vba宏的自定义excel工具栏

... 这将用相应的文本字符串填充Range命令后面括号中的单元格。当然,您可以根据需要切换出标题,并根据需要展开列表。 ...

  • 发布于 2021-03-13 16:39
  • 阅读 ( 364 )

如何使用索引公式创建交互式excel图表

... 现在我们需要向下跳三行,在一个单元格中输入单词“Dataset”,在右边的单元格中输入占位符编号。现在,它们只是占位符,但很快它们就会成为我们下拉菜单的基础。 ...

  • 发布于 2021-03-13 18:46
  • 阅读 ( 255 )

excelvba初学者编程教程

...本指南将通过一个简单的项目帮助您尝试VBA:一个将所选单元格的值从英镑转换为美元的按钮。我们将向您介绍VBA和Excel的交互方式。这个简短的教程将使您走上创建自己的更复杂的项目的道路。 ...

  • 发布于 2021-03-17 04:40
  • 阅读 ( 226 )

4个excel查找功能,有效搜索电子表格

... [表\数组]用于指定函数将在其中查找查找和返回值的单元格。选择范围时,请确保数组中包含的第一列将包含查找值! [col\u index\u num]是包含返回值的列的编号。 [range\u lookup]是可选参数,取1或0...

  • 发布于 2021-03-18 02:23
  • 阅读 ( 262 )

如何使用vba脚本从excel电子表格发送电子邮件

...的CDO组件发送一封电子邮件,该电子邮件将传递特定Excel单元格的结果。 ...

  • 发布于 2021-03-22 18:44
  • 阅读 ( 230 )

关于在excel中编写vba宏的初学者教程(以及学习的原因)

...每个商店的季度销售额,并将这些总额写入电子表格中的单元格(如果您不确定如何访问VBA对话框,请查看此处的VBA演练): ...

  • 发布于 2021-03-24 10:07
  • 阅读 ( 244 )

如何在excel中合并和取消合并单元格:技巧和窍门

当您想在Excel中将两个单元格合并为一个单元格时,有几个选项。合并单元格是最好的方法之一。但它也有一些缺点。即便如此,您可能会发现它对于在Excel中处理文本很有用。 ...

  • 发布于 2021-03-25 03:38
  • 阅读 ( 204 )

在mac上的excel中使用宏可以节省时间并执行更多操作

...的销售数据。(如果没有数据填充此工作表,可以在所有单元格中输入=randbween(101000)来创建虚拟数据。)接下来,单击功能区中的“开发人员”。 ...

  • 发布于 2021-03-26 11:00
  • 阅读 ( 410 )

如何在microsoftexcel中使用if语句

...脚本程序中的用途有多广泛,但是您知道您可以在Excel的单元格中使用许多相同的逻辑吗? ...

  • 发布于 2021-03-26 12:25
  • 阅读 ( 207 )

如何快速成为microsoftexcel超级用户

...的基础知识。这包括处理文本、数字、日期、行、列以及函数和公式。 ...

  • 发布于 2021-03-26 21:41
  • 阅读 ( 243 )
comforpostma
comforpostma

0 篇文章

相关推荐