如何在Google Spreadsheet中提取指定范围的子集
按指定起始列、提取长度截取Range子集的实现方法
核心逻辑为:以原范围的左上角单元格为基准,按起始列参数做列偏移,再按原范围的行高、指定的提取列宽重定义范围边界即可,不同使用场景的具体写法如下:
- Excel 365/2021+ 公式实现
直接使用OFFSET函数即可,对应示例的写法为:=OFFSET(A1:D1,0,2-1,1,2)
参数对应规则:- 第1位:传入原始Range,示例中为
A1:D1 - 第2位:行偏移量,不跨行截取时固定填0
- 第3位:列偏移量,因为列序号从1开始计数,所以填「起始列参数-1」,示例起始列为2,因此偏移1列
- 第4位:截取的行数,和原Range行数保持一致即可,示例原范围为1行所以填1
- 第5位:需要提取的列长度,示例要取2列因此填2
公式计算结果正好为目标范围B1:C1,如果需要做动态参数,直接把起始列、提取长度替换成对应单元格引用即可。
- 第1位:传入原始Range,示例中为
- VBA 代码实现
组合Range对象的Offset偏移方法和Resize重设大小方法即可,示例代码:Sub ExtractRangeSubset() Dim sourceRng As Range, targetRng As Range Dim startCol As Long, extractColLen As Long ' 以下参数可根据实际需求修改 Set sourceRng = Range("A1:D1") ' 原始范围 startCol = 2 ' 指定起始列 extractColLen = 2 ' 指定提取长度 ' 生成目标子范围 Set targetRng = sourceRng.Offset(0, startCol - 1).Resize(sourceRng.Rows.Count, extractColLen) ' 测试:选中提取到的范围,可替换为实际业务逻辑 targetRng.Select End Sub - Google Sheets 公式实现
除了通用的OFFSET写法外,还可以用更直观的CHOOSECOLS函数实现:=CHOOSECOLS(A1:D1, SEQUENCE(extractColLen,1,startCol))
代入示例参数后计算结果同样为B1:C1。

内容的提问来源于stack exchange,提问作者Keisuke Nagakawa 永川 圭介
相关产品推荐
相关产品推荐

