arrays - Excel VBA - 按固定宽度分隔一维数组的元素

标签 arrays excel vba

假设我的数据位于 A1:A100 范围内。我想按固定宽度将范围中的每个单元格拆分为多列,例如(0-10,10-15,15-37)。我可以在 vba 和 excel 本身中使用 Text-to-Columns 函数。

我的问题是,如果我首先在 VBA 中将范围传递给数组:

Dim my Array as Variant
myArray = Range("A1:A100").value

我将如何应用以下逻辑:

myNewArray = Array(myArray(0,10),myArray(10,15),myArray(15,37))

或者可能像这样:

for i=1 to 100
    myNewArray(i,1) = mid(myArray(i),0,10)
    myNewArray(i,2) = mid(myArray(i),10,5)    
    myNewArray(i,3) = mid(myArray(i),15,22)
next

这将生成一个 100 行 x 3 列的新数组,但会在指定点拆分初始数据,就像文本到列方法一样。但这些方法似乎不起作用。

我尝试寻找这个问题的答案,但似乎找不到任何东西

如有任何帮助,我们将不胜感激, 谢谢

最佳答案

除了 Scott 在评论中的正确提示之外,您还可以仅使用 一个 数据字段数组(基于三列)并执行反向循环拆分第一个“列”:

Option Explicit

Sub Split_them()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("MySheet") ' << change to your sheet name
Dim i As Long, j As Long
Dim v
Dim a(): a = Array(0, 11, 16, 38)   ' Fixed Widths (first item zero)
v = ws.Range("A1:C100")
For i = 1 To UBound(v, 1)
    For j = 3 To 1 Step -1
        v(i, j) = Mid(v(i, 1), a(j - 1) + 1, a(j) - a(j - 1))
    Next j
Next i
' write back to sheet
ws.Range("A1:C100").Offset(0, 2) = v
End Sub

关于arrays - Excel VBA - 按固定宽度分隔一维数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50416668/

相关文章:

javascript - 如何查找数组中不包含在 MongoDB 集合中的项目

python - 逐元素乘以 2D NumPy 数组并求和

vba - 在 Excel 中从一堆 =EMBED ("Forms.HTML:TextArea.1",""中提取文本

excel - For循环捕获不同命名范围内的值

c - 将可变长度数组声明为宏

PHP 将空数组转换为字符串

vba - 通过合并现有行创建新行 excel

c# - 使用 C# 的 Microsoft.Office.Interop.Excel 生成具有预填充下拉值的 Excel 文件

粘贴之前的 Excel VBA 宏 : Check content (of clipboard? )

ms-access - 在更改事件处理程序中获取文本框值