我有一个如下的 Excel 矩阵:
PID# T1 T2 T3 T4 T5 T6 T7
11 1 1
14 1 1 1
21 1 1
41 1 1 1 1
71 1
88 1 1 1
PID#
只不过是进程,所有的进程都是由多个任务组成的。但并非所有进程都应该使用所有T1 - T5
任务。在这种情况下,可以获得PID#
使用的最大任务。1
用于表示某项任务是否已被使用。这里 PID# 41 和 88 使用的最大任务说是5
。我只需要最大使用的列数和使用该列数的任何行#。
笔记
这里我习惯1
说有数据,但实际上有不同类型的数据。我需要找出哪一行使用了最大列。但是如果一行的任何单元格blank
在左侧,则应该在计数中。比如说——
<> 1 <> 1 给出的计数为 4
<> <> 1 <> 将计数为 3
1 1 <> 将计数为 2 ' 在这里我用来<>
表示no values
编辑
Option Explicit
Dim ArrayListTaskDetails : Set ArrayListTaskDetails = CreateObject("System.Collections.ArrayList")
Dim i,colcount
i=2
Do while i < = objExcel1.Application.WorksheetFunction.CountA(ob.Rows(1))
colcount=objExcel1.Application.WorksheetFunction.CountA(ob.Rows(i))
ArrayListTaskDetails.Add(colcount)
i=i+1
Loop
ArrayListTaskDetails.Sort()
i=ArrayListTaskDetails.Count
MsgBox("HighestColumnNumner:" & ArrayListTaskDetails(i-1))
问题:
我无法计算没有连续值的行的空白列。因此计数不是由我正确产生的。
编辑1
这里的问题仍然是我无法计算左边的空白单元格(如果有的话),因为这些也被视为已使用的列,其中其他行可以有值。因此需要找出最右边的已使用的列一行,之后没有任何行使用任何列。希望我能够清楚我在寻找什么:
Option Explicit
Dim objExcel1
Dim strPathExcel1
Dim objSheet1,objWB,ColCount
Dim ArrayListTaskDetails : Set ArrayListTaskDetails = CreateObject("System.Collections.ArrayList")
Set objExcel1 = CreateObject("Excel.Application")
strPathExcel1 = "D:\AravoVB\.xlsx"
Set objWB = objExcel1.Workbooks.open(strPathExcel1)
Set objSheet1 = objExcel1.ActiveWorkbook.Worksheets(1)
Do Untill count > objExcel1.Application.WorksheetFunction.CountA(objSheet1.Rows(1))
Range = objSheet1.("count:count")
ColCount=objExcel1.Application.WorksheetFunction.CountIf(Range,<> "")
ArrayListTaskDetails.Add(ColCount)
Loop
ArrayListTaskDetails.Sort()
MsgBox(ArrayListTaskDetails(ArrayListTaskDetails.Count - 1))
谢谢,