news 2026/3/26 17:21:14

【理解“Collection存储Union区域后能分两次Resize写入单元格”的核心原因】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【理解“Collection存储Union区域后能分两次Resize写入单元格”的核心原因】

要理解“Collection存储Union区域后能分两次Resize写入单元格”的核心原因,需先理清Collection的存储特性Union区域的结构Resize写入的逻辑三者的关系,以下是逐层拆解:

一、核心前提:Collection存储的是“独立的Range对象”,而非合并的Union

你提到的“用Collection添加Union”,实际场景通常是:

DimcolAsNewCollection' 分两次添加两个独立Range(而非直接添加合并后的Union)col.Add Range("A1:A3")' 第一个区域col.Add Range("C1:C2")' 第二个区域' (而非 col.Add Union(Range("A1:A3"), Range("C1:C2")))

这是能“分两次Resize写入”的关键——Collection中存储的是两个独立的Range对象(而非合并后的Union),每个对象都保留了自身的行数、列数和值,因此可逐个取出并单独Resize写入。

二、为什么能“分两次Resize入单元格”?

1. Collection的“有序性+独立存储”

Collection是有序的对象容器,存入的每个Range会被分配独立的索引(如col(1)对应第一个Range,col(2)对应第二个),且每个Range对象的属性(.Rows.Count/.Columns.Count/.Value)完全保留,可单独提取。

2. Resize的“适配性”

Resize(行数, 列数)可根据单个Range的尺寸,精准匹配写入的单元格范围:

  • 若取出的是单行多列Range(如C1:C2是2列1行),则startCell.Resize(1, 2)可刚好容纳该区域的值;
  • 若取出的是多行单列Range(如A1:A3是1列3行),则startCell.Resize(3, 1)可匹配。
3. “连续写入”的逻辑:动态更新起始单元格

分两次写入时,只需在第一次写入后,将起始单元格偏移到已写入区域的下一列/行,即可实现连续拼接,示例如下:

三、完整示例:Collection存储两个Range,分两次Resize连续写入

SubWriteCollectionRangeByResize()DimcolAsNewCollectionDimrng1AsRange,rng2AsRangeDimstartCellAsRangeDimiAsIntegerDimcurrentCellAsRange' 动态更新的写入起点' 1. 初始化两个独立Range,存入CollectionSetrng1=Range("A1:A3")' 3行1列Setrng2=Range("C1:C2")' 1行2列col.Add rng1' 第一个区域(索引1)col.Add rng2' 第二个区域(索引2)' 2. 定义写入起始单元格(如F1)SetstartCell=Range("F1")SetcurrentCell=startCell' 初始起点' 3. 分两次取出Collection中的Range,Resize写入Fori=1Tocol.CountDimtempRngAsRangeSettempRng=col(i)' 取出第i个Range' 关键:根据取出Range的尺寸Resize,写入当前起点currentCell.Resize(tempRng.Rows.Count,tempRng.Columns.Count).Value=tempRng.Value' 更新起点:横向连续(按列偏移),若纵向则改为 .Offset(tempRng.Rows.Count, 0)SetcurrentCell=currentCell.Offset(0,tempRng.Columns.Count)Nexti MsgBox "写入完成!区域:" & startCell.Address & "至 "&currentCell.Offset(0,-1).AddressEndSub

四、对比:Union vs Collection存储的差异

存储方式存储内容能否分两次Resize写入原因
Collection多个独立的Range对象✅ 可以每个Range独立存储,可通过索引逐个取出,单独Resize适配
Union合并后的单个Range对象❌ 直接不行Union是“合并的整体”,遍历需拆解子区域,无法直接按原独立区域分两次取出

五、补充:若Collection中存的是“合并后的Union”,如何分两次写入?

如果Collection中实际存储的是Union(rng1, rng2)(而非两个独立Range),则需先拆解Union的子区域,再分两次写入:

SubWriteUnionFromCollection()DimcolAsNewCollectionDimunionRngAsRange,subRngAsRangeDimstartCellAsRange,currentCellAsRange' 1. Collection中存入合并后的UnionSetunionRng=Union(Range("A1:A3"),Range("C1:C2"))col.Add unionRng' 2. 取出Union并拆解子区域SetstartCell=Range("F1")SetcurrentCell=startCellFor EachsubRngIncol(1)' 遍历Union的子区域(分两次)currentCell.Resize(subRng.Rows.Count,subRng.Columns.Count).Value=subRng.ValueSetcurrentCell=currentCell.Offset(0,subRng.Columns.Count)NextsubRngEndSub

总结

核心原因是:

  1. Collection有序且独立存储每个Range对象,保留了原Range的尺寸和值;
  2. 每次取出一个Range后,可通过Resize匹配其尺寸写入单元格;
  3. 动态更新起始单元格的位置,实现“连续写入”。

而如果是直接存储合并后的Union,需先拆解其子区域(For Each subRng In UnionRng),才能按原区域分两次Resize写入。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/23 17:16:45

Linly-Talker项目贡献者招募:你可以参与哪些模块?

Linly-Talker项目贡献者招募:你可以参与哪些模块? 在虚拟主播、AI客服、数字员工日益普及的今天,一个真正“能听、会说、有表情”的数字人系统,早已不再是科幻电影里的幻想。但要让一张静态照片变成能与你自然对话的智能体&#…

作者头像 李华
网站建设 2026/3/24 20:31:25

Linly-Talker云端部署最佳实践(Kubernetes+GPU节点)

Linly-Talker云端部署最佳实践(KubernetesGPU节点) 在虚拟主播、AI客服和智能教育等场景快速普及的今天,用户对“能说会动”的数字人不再只是好奇,而是期待真正自然、实时的交互体验。然而,一个集成了大模型、语音识别…

作者头像 李华
网站建设 2026/3/25 3:32:41

Hanzi Writer 是 javascript 免费开源库,根据汉字书写时按照笔画顺序的特征,可以播放正确笔画顺序的描边动画和练习测试。 支持简体字和繁体字

官网:Hanzi Writer 文档:Hanzi Writer Hanzi Writer 是 javascript 免费开源库,根据汉字书写时按照笔画顺序的特征,可以播放正确笔画顺序的描边动画和练习测试。 支持简体字和繁体字。我基于这个库制作了汉字学习项目&#xff1…

作者头像 李华
网站建设 2026/3/24 11:37:00

基于Linly-Talker开发虚拟偶像,成本降低超70%

基于Linly-Talker开发虚拟偶像,成本降低超70% 在直播带货的深夜直播间里,一个面容精致、语气亲切的“主播”正流畅地介绍商品——她不会疲倦,不需要休息,甚至连声音和表情都与真人无异。但你可能想不到,这样一个看似需…

作者头像 李华
网站建设 2026/3/13 13:18:18

Linly-Talker在博物馆导览中的沉浸式应用案例

Linly-Talker在博物馆导览中的沉浸式应用案例 在一座安静却人声鼎沸的博物馆展厅里,一位老人驻足于一尊斑驳的青铜器前,轻声问道:“这东西是哪个朝代的?”几秒钟后,屏幕上的虚拟讲解员微微启唇,眼神温和地回…

作者头像 李华
网站建设 2026/3/25 17:18:44

Linly-Talker支持竖屏视频输出吗?移动端适配方案

Linly-Talker支持竖屏视频输出吗?移动端适配方案 在短视频主导信息消费的今天,用户打开手机的第一件事,往往是刷一段全屏竖直的短视频。无论是抖音、快手还是微信视频号,9:16 的竖屏比例已经成为移动内容的标准形态。这种观看习惯…

作者头像 李华