|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
function 单元格区域转数组并遍历数组(){
const ShB = Sheets("数据表")
var arr=[];
var rng=Application.Union(ShB.Range('A3:A100'),ShB.Range('B3:B100'),ShB.Range('G3:G100')); //把三个区域rng
Cou=rng.Areas.Count
for (let i=1;i<=rng.Areas.Count;i++){
arr.push(rng.Areas(i).Value2.flat()); //flat()方法,一次性读出数据转二维数组
}
var h=arr.length; //数组行数
var l=arr[0].length; //数组列数
ShB.Range("J3:S999").ClearContents();
Range('J3').Resize(l,h).Value2=WorksheetFunction.Transpose(arr); //转置
}
单元格区域转数组,列不相邻时数组正常为三列,当两列相邻时转数组时,数组列只有两列,如:rng=Application.Union(ShB.Range('A3:A100'),ShB.Range('B3:B100'),ShB.Range('G3:G100'))
单元格区域为A、B列时数组只有两列
rng=Application.Union(ShB.Range('A3:A100'),ShB.Range('C3:C100'),ShB.Range('G3:G100'))
单元格区域为A、C列时数组正常三列
请问一下如何解决。
|
|