excel - 如何使用 Match 函数并引用它返回的行号?
问题描述
我会尽力解释这一点。我正在处理一个包含大约 150 列和 2,500 行的电子表格。在 D 列中,有一个对该行唯一的标识号。我需要在该列上过滤特定的 ID 号(例如 B5555),然后从该行的 AB、O 和 M 列中的值中减去该行的 AH 列中的值。然后我需要将 AH 列中的值归零。
过滤 ID 号没有问题,但 B5555 可以显示在任何行中。即,一周显示在第 2,300 行,下一周显示在 1,500,所以我不能让公式说从 AB 2300 中减去 AH2300,因为下周将作用于错误的单元格。如何使公式从 B5555 显示的行中专门减去?到目前为止,我的代码只过滤了那个 ID 号,所以它不多,但如下所示。我是 VBA 操作系统的新手,不胜感激。
Sub ManualAdjustments()
Dim wbTarget As Workbook
Dim wbThis As Workbook
Dim strName As String
Dim rownum As Integer
Set wbTarget = Workbooks("Weekly Data")
wbTarget.Activate
Worksheets("Raw").Activate
rownum = Application.WorksheetFunction.Match("B5555",
Sheets("Raw").Range("D:D"), 0)
上面的代码是我到目前为止所拥有的。如何在简单的减法公式中引用“rownum”?会不会是:Worksheets("Raw").Range("AHrownum")-Worksheets("Raw").Range("ABrownum")
解决方案
略有不同的做法:
Sub ManualAdjustments()
Dim wbTarget As Workbook
Dim shtTarget As Worksheet
Dim wbThis As Workbook
Dim strName As String
Dim rownum As Long '<<< safer never to use Integer...
Set wbTarget = Workbooks("Weekly Data")
Set shtTarget = wbTarget.Sheets("Raw")
'no "worksheetfunction" = no runtime error if no match
rownum = Application.Match("B5555", shtTarget.Range("D:D"), 0)
If Not IsError(rowNum) Then '<< test for successful match here
With shtTarget.Rows(rownum)
'Here Range() is *relative to the row*
.Range("C1").Value = .Range("A1").value = .Range("B1").Value
End With
End if
End Sub
推荐阅读
- windows-installer - 将 .msi 转换为 .exe 的最佳工具包是什么?
- ios - 观看 OS 项目文件(处理不同目的的单独类)
- string - Haskell中的解析功能,制作地图功能时遇到麻烦
- android - 如何从android studio将参数发送到URL的html正文?
- python - Pyspark没有打开jupyter
- android - 为什么 MotionLayout 折叠动画不使用 NestedScrollView 自动完成?
- java - 如何在 Selenium Webdriver 的控制台上针对单选按钮显示文本?我应该使用什么方法?
- ruby-on-rails - 在运行索引迁移时,Rails 是否会索引现有记录?
- powerbi - DAX 与 PowerQuery 中的 Power BI 计算列
- javascript - 如何仅使用 css 删除 django 表单中的默认值“0”