EXCEL VBA 代码的问题?
D9是AQ9:AT9数值的除3余1的个数;
E9是AQ9:AT9数值的除3余2的个数;
一行一行相对应的;
请老师帮忙,写个快速返回的数组代码
另外能不能方便一些,因为我还需要修改除4和除5的 展开
程游芦序代码:
程序运行结果:
代码文本:
Option Explicit
Sub 宏1()
Dim arrC, arrAQ, i&, j&, k&, n&
n = Cells(Rows.Count, "AQ").End(xlUp).Row - 8 'AQ列从9行开始的数据行数
arrAQ = Range("AQ9").Resize(n, 4)
ReDim arrC(1 To n, 1 To 3)
带码 For i = 1 To n
For j = 1 To 4
k = arrAQ(i, j) Mod 3 + 1 '余数+1
蠢磨哪 arrC(i, k) = arrC(i, k) + 1 '数组C对应列+1
Next j
Next i
Range("C9").Resize(n, 4) = arrC
End Sub
兄弟,还是我来嘛,别个不熟悉带碧,理解要半天
Sub cm()
Dim r, i, j%
Dim a%
Dim m, n%
Dim arr, brr, sh1
Set sh1 = ActiveSheet
n = InputBox("请输入数谨拦字!")
With sh1
r = .Range("at" & Rows.Count).End(xlUp).Row
.Range("c9:g" & Rows.Count).ClearContents
arr = .Range("aq9:at" & r)
ReDim brr(1 To UBound(arr), 1 To n)
For i = 9 To r
For m = 0 To n - 1
a = 0
For j = 43 To 46
If IsNumeric(.Cells(i, j)) Then
If .Cells(i, j) Mod n = m Then
a = a + 1
End If
brr(i - 8, m + 1) = a
End If
Next j
Next m
Next i
.Range("c9").Resize(UBound(arr), n) = brr
End With
End Sub
整个可以弹出一蠢晌举个对话框,然后你输入多少就按照 多少来。
也可以把整个对话框换成提取某个单元格的值,看你需求!!
这样子修改起来是方便,不过就是慢了很多,哎,苦啊.
有多少数据啊,还嫌慢,我再修改下,保证不慢
这俩句
If IsNumeric(.Cells(i, j)) Then
If .Cells(i, j) Mod n = m Then
改为
If IsNumeric(arr(i - 8, j - 42)) Then
If arr(i - 8, j - 42) Mod n = m Then
是我的失误,取了个数组居然没有使用,直接用的单元格,我说不应该慢。。