excel - 创建一个动态范围,range(cells(), cells())
问题描述
我需要创建一系列单元格,这些单元格会因不同的人名而改变。对于每个人的姓名,我都有定义范围的行号和列号,这个数字位于工作表的某些单元格中。
例如,
行:
单元格(A5)= 3
单元格(A6)= 9
柱子:
单元格(A7)= 4 ---->(D列)
因此,这组行数和列数给出的最终范围是 range("D3:D9")。对于另一个人的名字,我将有一个不同的范围,由一些其他数字给出的行和列位置。问题是每天都会添加新的或现有的人名,所以我无法创建命名范围,因为它每天都会改变。但是,单元格 A5/A6/A7 中的值正在捕获不同日期新范围位置的新信息。
我试图构建这行代码,但它不起作用:
Sub Dynamic_Range()
Dim rng As Range
Set rng = Range(Cells(Range("A5").Value, Range("A7").Value), Cells(Range("A6").Value, Range("A7").Value))
End Sub
有人可以就此提出建议吗?
解决方案
更新
在我第一次回答这个问题后,我想到偏移函数应该做你想做的事,这将避免 VBA。在同一个共享文件中,您应该可以看到一个示例。
原始答案
您可能可以通过使用自定义函数来完成您想要的。我说可能是因为不清楚您的功能/范围是否跨越工作表。此外,这种方法使用 volatile 函数,如果文件很大,可能会导致一些性能问题。
话虽如此,这是自定义函数根据一些输入参数创建范围的语法。
Function dynamicName(rowStart As Long, RowEnd As Long, theColumn As Long) As Range
Application.Volatile
Set dynamicName = Range(Cells(rowStart, theColumn), Cells(RowEnd, theColumn))
End Function
您可以在这个示例文件中看到它是如何工作的。如果我将此功能用于单元格F4
=SUM(dynamicName(HLOOKUP(F2,A4:B7,2,FALSE),HLOOKUP(F2,A4:B7,3,FALSE),HLOOKUP(F2,A4:B7,4,FALSE)))
推荐阅读
- regex - 为什么使用 (.|\n)*?是个坏主意吗?
- c# - Linq Sql Query 结果与在数据库中运行的 SQL 查询不同
- sql - 如何在 laravel eloquent 查询构建器中实现“where not”
- powershell - 通过 ADUser 问题进行的 ADAccount 非活动帐户管道
- laravel - 通过 Laravel GuzzleHTTP 发出 POST 请求进行令牌认证
- html - 如何使用 python 安全地获取和使用外部 html
- html - 如何使我的按钮的相对位置(对视频)相同?
- python - 二维数组列表的逐像素中位数 - numpy
- javascript - JavaScript 对象的图形表示(树视图)?
- mysql - 删除重复记录