Excel·VBA二维数组S形排列

news2024/11/25 17:17:57

与之前的文章《Excel·VBA螺旋数组函数》将一维数组转为二维螺旋数组
本文将数组转为S形排列的二维数组,类似考场座位S形顺序

Function S形排列(ByVal arr, ByVal num_rows&, ByVal num_cols&, Optional ByVal mode$ = "row")
    '将数组arr转为num_rows行 * num_cols列的S形排列二维数组(数组从1开始计数)
    '写入模式mode,row按行写入,col按列写入
    Dim a, brr, result, rc&, i&, j&, x&, y&
    rc = num_rows * num_cols: ReDim brr(1 To rc), result(1 To num_rows, 1 To num_cols)
    For Each a In arr  '多行多列的,按列从左往右读取,防止arr元素个数超出rc
        If x < rc Then x = x + 1: brr(x) = a
    Next
    If mode = "row" Then
        For i = 1 To num_rows
            If i Mod 2 = 1 Then
                For j = 1 To num_cols  '奇数行,从左往右写入
                    y = y + 1: result(i, j) = brr(y)
                Next
            Else
                For j = num_cols To 1 Step -1  '偶数行,从右往左写入
                    y = y + 1: result(i, j) = brr(y)
                Next
            End If
        Next
    ElseIf mode = "col" Then
        For j = 1 To num_cols
            If j Mod 2 = 1 Then
                For i = 1 To num_rows  '奇数列,从上往下写入
                    y = y + 1: result(i, j) = brr(y)
                Next
            Else
                For i = num_rows To 1 Step -1  '偶数列,从下往上写入
                    y = y + 1: result(i, j) = brr(y)
                Next
            End If
        Next
    End If
    S形排列 = result
End Function
  • 举例
Sub 测试()
    Dim arr, brr
    arr = [a1].CurrentRegion
    brr = S形排列(arr, 5, 4)
    [c1].Resize(UBound(brr), UBound(brr, 2)) = brr
    brr = S形排列(arr, 4, 5)
    [c8].Resize(UBound(brr), UBound(brr, 2)) = brr
End Sub

在这里插入图片描述
按行写入再使用Transpose函数转置后的结果,与直接使用按列写入一致

Sub 测试()
    Dim arr, brr
    arr = [a1].CurrentRegion
    brr = WorksheetFunction.Transpose(S形排列(arr, 5, 4))
    [c1].Resize(UBound(brr), UBound(brr, 2)) = brr
    brr = S形排列(arr, 4, 5, "col")
    [c8].Resize(UBound(brr), UBound(brr, 2)) = brr
End Sub

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【并发】 第四篇 原子操作(一)

导航 一. 非原子操作二. 原子操作1. 使用锁2. 使用原子类一. 非原子操作 首先在并发场景中, 一个线程需要对内存中的某个共享变量的值进行修改时,大致可分为以下三个步骤: # 1.从内存中读取共享变量的值,到线程本地 # 2.执行修改操作 # 3.将修改后的新值,重新写回到内存中此时…

PostgreSQL入门到实战-第十九弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(三)官网地址PostgreSQL概述PostgreSQL中INNER JOIN命令理论PostgreSQL中INNER JOIN命令实战更新计划 PostgreSQL中表连接操作(三) 使用PostgreSQL INNER JOIN子句从多个表中选择数据。 官网地址 声明: 由于操作系统, 版本更新等…

Android 输入法框架

输入法属于输入系统的一部分&#xff0c;区别于输入系统只能向系统产生时间&#xff0c;输入法能向系统输入具体的内容&#xff0c;下面来认识输入法的大体框架&#xff0c;以下内容参考清华大学出版社出版的《Android图形显示系统》。 输入法框架包含3个组件&#xff0c;各组件…

车载视频智能创作解决方案,影视级视频制作

当下车载视频已经不仅仅是一种记录行车过程的方式&#xff0c;更是展现企业品牌形象、传递文化内涵的重要媒介。传统的车载视频制作方式往往耗时耗力&#xff0c;效率低下&#xff0c;无法满足企业对于高质量、高效率的需求。针对这一痛点&#xff0c;美摄科技凭借其在视频智能…

搭建MyBatis框架

文章目录 一、开发环境和准备工作二、创建MyBatis核心配置文件三、创建Mapper接口创建MyBatis的映射文件 四、测试添加用户功能五、日志加入依赖加入log4j的配置文件 六、测试修改功能七、测试删除功能八、测试查询功能根据id查询查询所有信息 一、开发环境和准备工作 MyBatis需…

Python爬虫怎么挣钱?6个Python爬虫赚钱方式,搞搞副业不是问题

1.最典型的就是找爬虫外包活儿 网络爬虫最通常的的挣钱方式通过外包网站&#xff0c;做中小规模的爬虫项目&#xff0c;向甲方提供数据抓取&#xff0c;数据结构化&#xff0c;数据清洗等服务。新入行的程序员大多都会先尝试这个方向&#xff0c;直接靠技术手段挣钱&#xff0…

如果学又学不进,产又产不出,又需要挣钱生存,应该怎么办?机会很多,为下次做好准备

面对学习困难、工作压力和生存需求&#xff0c;可以考虑以下方法来应对&#xff1a; 寻求帮助&#xff1a;如果学习困难&#xff0c;可以寻求老师、同学或专业人士的帮助和指导。他们可能能够提供额外的支持和解决方案。 调整学习方法&#xff1a;尝试不同的学习方法和技巧&am…

2024 年第十四届 MathorCup 完整解题思路

C 题 物流网络分拣中心货量预测及人员排班 电商物流网络在订单履约中由多个环节组成,图 1 是一个简化的物流 网络示意图。其中,分拣中心作为网络的中间环节,需要将包裹按照不同 流向进行分拣并发往下一个场地,最终使包裹到达消费者手中。分拣中心 管理效率的提升,对整体网络的…

K8S资源管理之计算资源管理

1.详解Requests和Limits参数 以CPU为例&#xff0c;下图显示了未设置Limits与设置了Requests和Limits的CPU使用率的区别 尽管Requests和Limits只能被设置到容器上&#xff0c;但是设置了Pod级别的Requests和Limits能大大提高管理Pod的便利性和灵活性&#xff0c;因此在Kubernet…

基于Java停车场管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

Android Studio导入第三方so库和jar包——Android Studio

导入so库 方式一&#xff08;libs文件夹&#xff09; 将项目以【Project】的结构显示&#xff0c;将目标架构对应的so文件夹&#xff08;如下图中 的arm64-v8a&#xff09;复制粘贴到app文件下的lib文件夹中&#xff08;如下图的步骤1 2 3&#xff09; 在build.gradle&…

网络原理(应用层、传输层)

文章目录 一、应用层1.1 自定义协议1.2 通用协议XMLJSONprotobuf 1.3 DNS 域名解析系统 二、传输层2.1 UDP协议2.2 TCP协议协议端格式及解析可靠性机制确认应答超时重传连接管理&#xff08;三次握手&#xff0c;四次挥手&#xff09;流量控制拥塞控制 效率机制滑动窗口延迟应答…

基于java+springboot+vue实现的西安旅游系统(文末源码+Lw)23-265

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统西安旅游系统信息管理难度大&#xff0c;容错率低&#…

oracle创建整个数据库的只读账户

在源用户readonly 下创建只读用户 reader readonly 的表空间为AA 一、创建只读用户 create user reader identified by 密码 default tablespace AA; 二、授权 grant connect to reader ; 三、获取原账号readonly 的查询权限 select grant select on ||owner||.||object…

极狐GitLab对接OAuth2实现SSO

本文作者&#xff1a;极狐(GitLab) 高级解决方案架构师 武让 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 企…

代码+视频,R语言手动绘制连续线条的校准曲线(Calibration curve)(3)

校准曲线图表示的是预测值和实际值的差距&#xff0c;作为预测模型的重要部分&#xff0c;目前很多函数能绘制校准曲线。一般分为两种&#xff0c;一种是通过Hosmer-Lemeshow检验&#xff0c;把P值分为10等分&#xff0c;求出每等分的预测值和实际值的差距。 我们既往已经通过多…

淘宝1688京东店铺所有商品数据接口(item_search_shop接口系列,可测试)

淘宝、1688和京东都提供了API接口供开发者调用&#xff0c;以获取店铺和商品的详细数据。对于您提到的item_search_shop接口系列&#xff0c;这主要是用于获取店铺所有商品的数据。然而&#xff0c;具体的接口名称和功能可能会因平台而异&#xff0c;且可能随着平台的更新而有所…

IE浏览器清理缓存工具

有些项目可能因为浏览器缓存导致使用异常&#xff0c;比如登陆异常。这里提供清除浏览器痕迹的工具&#xff0c;以IE浏览器为例&#xff0c;痕迹的默认存放位置为&#xff1a; C:\Users\Ro\AppData\Local\Microsoft\Windows\Temporary Internet Files 新建bat或者cmd批处理文件…

关于光模块SFP-10G-SR、SFP-10G-LRM和SFP-10G-LR的对比分析

万兆光模块是万兆网络搭建领域中的重要组成部分&#xff0c;是传输万兆速率必要组件。随着网络速率和容量需求的增加&#xff0c;目前万兆光模块的应用量非常大。而在万兆光模块中&#xff0c;短距离光模块的出货量居首&#xff0c;本文将详细介绍3款短距离万兆光模块SFP-10G-S…

SpringBoot集成Skywalking链路追踪

安装skywaling 参考&#xff1a;Centos7搭建 SkyWalking 单机版-CSDN博客 下载Agents https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz 1. 在IDEA中使用skywalking agent 在VM options中填入如下信息 -javaagent后是…