私は以下のような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))
ありがとう、