Excel·VBA二维数组S形排列

与之前的文章《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元素个数超出rcIf x < rc Then x = x + 1: brr(x) = aNextIf mode = "row" ThenFor i = 1 To num_rowsIf i Mod 2 = 1 ThenFor j = 1 To num_cols  '奇数行,从左往右写入y = y + 1: result(i, j) = brr(y)NextElseFor j = num_cols To 1 Step -1  '偶数行,从右往左写入y = y + 1: result(i, j) = brr(y)NextEnd IfNextElseIf mode = "col" ThenFor j = 1 To num_colsIf j Mod 2 = 1 ThenFor i = 1 To num_rows  '奇数列,从上往下写入y = y + 1: result(i, j) = brr(y)NextElseFor i = num_rows To 1 Step -1  '偶数列,从下往上写入y = y + 1: result(i, j) = brr(y)NextEnd IfNextEnd IfS形排列 = result
End Function
  • 举例
Sub 测试()Dim arr, brrarr = [a1].CurrentRegionbrr = S形排列(arr, 5, 4)[c1].Resize(UBound(brr), UBound(brr, 2)) = brrbrr = S形排列(arr, 4, 5)[c8].Resize(UBound(brr), UBound(brr, 2)) = brr
End Sub

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

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跟TED演讲学英文:The inside story of ChatGPT‘s astonishing potential by Greg Brockman

The inside story of ChatGPT’s astonishing potential Link: https://www.ted.com/talks/greg_brockman_the_inside_story_of_chatgpt_s_astonishing_potential Speaker: Greg Brockman Date:April 2023 文章目录 The inside story of ChatGPTs astonishing potentialIntro…

Linux/October

October Enumeration Nmap 扫描发现对外开放了22和80端口&#xff0c;使用nmap详细扫描这两个端口 ┌──(kali㉿kali)-[~/vegetable/HTB/October] └─$ nmap -sC -sV -p 22,80 -oA nmap 10.10.10.16 Starting Nmap 7.…

Unity Shader之数学篇

一、坐标系 1、二维笛卡尔坐标系 屏幕坐标系是二维笛卡尔坐标系&#xff0c;OpenGL的屏幕坐标系原点在左下角&#xff0c;DirectX的屏幕坐标系原点在左上角。 2、三维笛卡尔坐标系 三维笛卡尔坐标系要区分是左手坐标系还是右手坐标系。 左手坐标系&#xff1a;举起你的左手…

ELK日志

​​​​​​​

2024年租用阿里云服务器多少钱?最新价格表

阿里云服务器租用价格表2024年最新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核…

物联网实战--驱动篇之(七)RTC时钟(DS1302)

目录 一、RTC简介 二、DS1302介绍 三、初始化 四、字节读写 五、功能函数 一、RTC简介 实时时钟&#xff0c;简称RTC&#xff0c;这个在STM32的外设里也有&#xff0c;不过STM32F1系列的RTC实际上只有一个计数器功能&#xff0c;如果需要年月日要自己写软件计算 &#xff…

转行项目经理,考软考还是PMP?

这两者择其一&#xff0c;或者有条件的两个都可以考虑一下&#xff0c;因为国内对这两个证书的需求都很大。 从企业环境来看 PMP适用于各行各业&#xff0c;在外企更受欢迎。 软考适用于计算机领域&#xff0c;而且在国企和政府部门比较受欢迎。 因此&#xff0c;可以综合考…

Github 2024-04-12 Java开源项目日报Top9

根据Github Trendings的统计,今日(2024-04-12统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9TypeScript项目3强大易用的开源建站工具 创建周期:2214 天开发语言:Java, TypeScript协议类型:GNU General Public License v3.0Sta…

集群开发学习(一)(安装GO和MySQL,K8S基础概念)

完成gin小任务 参考文档&#xff1a; https://www.kancloud.cn/jiajunxi/ginweb100/1801414 https://github.com/hanjialeOK/going 最终代码地址&#xff1a;https://github.com/qinliangql/gin_mini_test.git 学习 1.安装go wget https://dl.google.com/go/go1.20.2.linu…

第6章 6.3.1 正则表达式的语法(MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 正则表达式可以由一般的字符、转义字符、元字符、限定符等元素组…

李廉洋;4.11#黄金,WTI原油#行情走势分析策略。

美国银行预计&#xff0c;在今天召开的欧洲央行会议上不会有重大的政策变化&#xff0c;但欧洲央行正逐渐接近开始降息&#xff0c;尽管它采取的是一种谨慎的、依赖数据的方式。虽然欧洲央行对降息轨迹的信心不断增强&#xff0c;但降息的具体速度和幅度仍未公布&#xff0c;而…

Sorting Algorithms in Python (排序算法)

本篇文章主要介绍几种经典排序算法&#xff1a;冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、桶排序和基数排序。并给出用python实现的算法代码。 目录 一、冒泡排序 二、快速排序 三、选择排序 四、堆排序 五、插入排序 六、希尔排序 七、归…