|
楼主 |
发表于 2021-4-1 15:28
|
显示全部楼层
本帖最后由 ryoryo66 于 2021-4-1 15:34 编辑
尊敬的老师,这个代码在运用中,我想改写成这样的情况,在范围内单列统计单列的情况,改来改去实在是改不好.
麻烦您再帮我改一次,捉摸了好几天,实在没办法,再来求您一次.
就是 E9:E如果有和T1相同,就在T9开始返回T1的值;
G9:G如果有和V1相同,就在V9开始返回V1的值;
.....
一直到R9:R如果有和AG1相同,就在AG9开始返回AG1的值.
中间要是有空的列,就不用返回了.
排除"开奖数据",其它工作表都返回一样的格式.
求老师再帮忙改一次.
附加原来的代码:
Option Explicit
Sub test()
Dim arrList, arrData, arrResult, arrTable
Dim i%, j%, y%, n%, k%, irow%, str$, rng As Range
ReDim arrTable(0 To 3)
For i = 1 To UBound(arrTable)
arrTable(i) = CStr(i)
Next i
arrTable(0) = "断断"
For k = 0 To UBound(arrTable)
With Worksheets(arrTable(k))
Set rng = .Range("e:e").Find("*", , xlValues, , , xlPrevious)
If Not rng Is Nothing Then irow = rng.Row
If irow > 9 Then
arrData = .Range("e9:g" & irow).Value
arrList = .Range("h1:p1").Value
ReDim arrResult(1 To UBound(arrData), 1 To UBound(arrList, 2))
For j = 1 To UBound(arrList, 2)
str = arrList(1, j)
If Len(str) > 0 Then
For i = 1 To UBound(arrData)
n = 0
For y = 1 To 3
If InStr(str, arrData(i, y)) Then n = n + 1
Next y
If n = 2 Then arrResult(i, j) = n
Next i
End If
Next j
.Range("h9").Resize(UBound(arrResult), UBound(arrResult, 2)) = arrResult
End If
End With
Next k
End Sub
|
|