205 lines
6.6 KiB
QBasic
205 lines
6.6 KiB
QBasic
Attribute VB_Name = "awp_xlsx_case_persistency_pivot"
|
|
|
|
Option Explicit
|
|
|
|
' get the last row for a given xls sheet
|
|
Function getLastRow(ByVal start_row As Integer)
|
|
Dim last_row As Boolean
|
|
Dim last_check_row As Integer
|
|
Dim scan_row As Integer
|
|
Dim i As Integer
|
|
Dim cell_value_1 As String
|
|
|
|
|
|
Dim next_row_1 As Integer
|
|
|
|
scan_row = start_row
|
|
last_check_row = 9999
|
|
|
|
For i = start_row To last_check_row
|
|
scan_row = i
|
|
last_row = True
|
|
|
|
next_row_1 = i + 1
|
|
|
|
cell_value_1 = ReadCellValue("A" & CStr(next_row_1))
|
|
|
|
If (cell_value_1 <> "") Then
|
|
last_row = False
|
|
End If
|
|
|
|
If (last_row = True) Then
|
|
'Debug.Print "last row found"
|
|
Exit For
|
|
End If
|
|
Next i
|
|
|
|
getLastRow = scan_row
|
|
|
|
End Function
|
|
|
|
' get the value from cell for a given address
|
|
Function ReadCellValue(cell_addr As String)
|
|
|
|
ReadCellValue = Worksheets("Sheet1").Range(cell_addr).Value
|
|
|
|
End Function
|
|
|
|
' get the integer month from date
|
|
Function GetMonthFrDate(ByVal date_string As String) As Integer
|
|
Dim intMonth As Integer
|
|
Dim dt As String
|
|
dt = DateValue(date_string)
|
|
intMonth = month(dt)
|
|
GetMonthFrDate = intMonth
|
|
End Function
|
|
|
|
' get the integer quarter from date
|
|
Function GetQuarterFrDate(ByVal date_string As String) As Integer
|
|
Dim intQuarter As Integer
|
|
Dim intMonth As Integer
|
|
Dim dt As String
|
|
|
|
dt = DateValue(date_string)
|
|
intMonth = month(dt)
|
|
|
|
GetQuarterFrDate = Int((intMonth - 1) / 3) + 1
|
|
End Function
|
|
|
|
Function CountFigures(ws As Worksheet, ByVal start_row As Integer, ByVal last_row As Integer)
|
|
Dim i, j As Integer
|
|
|
|
' variable for result
|
|
Dim agent_month_new_case, agent_month_collapsed_case
|
|
Set agent_month_new_case = CreateObject("Scripting.Dictionary")
|
|
Set agent_month_collapsed_case = CreateObject("Scripting.Dictionary")
|
|
|
|
Dim agent_quarter_new_case, agent_quarter_collapsed_case
|
|
Set agent_quarter_new_case = CreateObject("Scripting.Dictionary")
|
|
Set agent_quarter_collapsed_case = CreateObject("Scripting.Dictionary")
|
|
|
|
Dim agent_month_case_persistency, agent_quarter_case_persistency
|
|
Set agent_month_case_persistency = CreateObject("Scripting.Dictionary")
|
|
Set agent_quarter_case_persistency = CreateObject("Scripting.Dictionary")
|
|
|
|
For i = start_row To last_row
|
|
Dim date_value As String
|
|
Dim int_month, quarter As Integer
|
|
Dim agent_name, new_case, collapsed_case, agent_team As String
|
|
Dim agent_quarter_key, agent_month_key, temp_key As String
|
|
|
|
date_value = ReadCellValue("A" & CStr(i))
|
|
int_month = GetMonthFrDate(date_value)
|
|
quarter = GetQuarterFrDate(date_value)
|
|
|
|
agent_name = ReadCellValue("B" & CStr(i))
|
|
agent_team = ReadCellValue("C" & CStr(i))
|
|
new_case = ReadCellValue("D" & CStr(i))
|
|
collapsed_case = ReadCellValue("E" & CStr(i))
|
|
|
|
agent_month_key = agent_name + "," + CStr(int_month)
|
|
agent_quarter_key = agent_name + "," + CStr(quarter)
|
|
|
|
' create if not found agent_name
|
|
If (Not (IsEmpty(agent_month_key)) And Not (agent_month_new_case.exists(agent_month_key))) Then
|
|
For j = 1 To 12
|
|
agent_month_new_case(agent_name + "," + CStr(j)) = 0
|
|
agent_month_collapsed_case(agent_name + "," + CStr(j)) = 0
|
|
agent_month_case_persistency(agent_name + "," + CStr(j)) = 0
|
|
|
|
Next j
|
|
|
|
For j = 1 To 4
|
|
agent_quarter_new_case(agent_name + "," + CStr(j)) = 0
|
|
agent_quarter_collapsed_case(agent_name + "," + CStr(j)) = 0
|
|
agent_quarter_case_persistency(agent_name + "," + CStr(j)) = 0
|
|
Next j
|
|
End If
|
|
|
|
If (new_case <> "") Then
|
|
agent_month_new_case(agent_month_key) = agent_month_new_case(agent_month_key) + CInt(new_case)
|
|
agent_quarter_new_case(agent_quarter_key) = agent_quarter_new_case(agent_quarter_key) + CInt(new_case)
|
|
End If
|
|
|
|
If (collapsed_case <> "") Then
|
|
agent_month_collapsed_case(agent_month_key) = agent_month_collapsed_case(agent_month_key) + CInt(collapsed_case)
|
|
agent_quarter_collapsed_case(agent_quarter_key) = agent_quarter_collapsed_case(agent_quarter_key) + CInt(collapsed_case)
|
|
End If
|
|
|
|
If (agent_month_new_case(agent_month_key) > 0) Then
|
|
agent_month_case_persistency(agent_month_key) = agent_month_new_case(agent_month_key) / (agent_month_new_case(agent_month_key) + agent_month_collapsed_case(agent_quarter_key))
|
|
Else
|
|
agent_month_case_persistency(agent_month_key) = 0
|
|
End If
|
|
|
|
If (agent_quarter_case_persistency(agent_month_key) > 0) Then
|
|
agent_quarter_case_persistency(agent_quarter_key) = agent_quarter_new_case(agent_quarter_key) / (agent_quarter_new_case(agent_quarter_key) + agent_quarter_collapsed_case(agent_quarter_key))
|
|
Else
|
|
agent_quarter_case_persistency(agent_month_key) = 0
|
|
End If
|
|
|
|
Next i
|
|
|
|
CountFigures = Array(agent_month_new_case, agent_month_collapsed_case, _
|
|
agent_quarter_new_case, agent_quarter_collapsed_case, _
|
|
agent_month_case_persistency, agent_quarter_case_persistency)
|
|
|
|
End Function
|
|
|
|
Function Run(ws As Worksheet)
|
|
Dim row_count As Integer
|
|
Dim rw As Variant
|
|
Dim count_figures_result As Variant
|
|
|
|
Dim start_row, last_row As Integer
|
|
start_row = 2
|
|
last_row = getLastRow(start_row)
|
|
|
|
Run = CountFigures(ws, start_row, last_row)
|
|
End Function
|
|
|
|
' canned method to open excel file
|
|
Function OpenFile(sPath As String)
|
|
Dim wb As Workbook
|
|
Set wb = Workbooks.Open(sPath)
|
|
' wb.Windows(1).Visible = False
|
|
|
|
Dim count_figures_result As Variant
|
|
|
|
If Not (wb.Sheets("Sheet1") Is Nothing) Then
|
|
count_figures_result = awp_xlsx_case_persistency_pivot.Run(wb.Sheets("Sheet1"))
|
|
End If
|
|
|
|
OpenFile = count_figures_result
|
|
|
|
wb.Close savechanges:=False
|
|
End Function
|
|
|
|
Sub Test()
|
|
Dim result As Variant
|
|
Dim agent_month_new_case, agent_month_collapsed_case, agent_quarter_new_case, agent_quarter_collapsed_case, agent_month_case_persistency, agent_quarter_case_persistency
|
|
result = awp_xlsx_case_persistency_pivot.OpenFile("c:\Temp\xlsx\Agent_Working_Performance.xlsx")
|
|
|
|
Set agent_month_new_case = result(0)
|
|
Set agent_month_collapsed_case = result(1)
|
|
Set agent_quarter_new_case = result(2)
|
|
Set agent_quarter_collapsed_case = result(3)
|
|
Set agent_month_case_persistency = result(4)
|
|
Set agent_quarter_case_persistency = result(5)
|
|
|
|
Debug.Print agent_month_case_persistency("Eason,1")
|
|
Debug.Print agent_month_case_persistency("Eason,2")
|
|
|
|
Debug.Print "done"
|
|
End Sub
|
|
|
|
Sub Helloworld()
|
|
Debug.Print "helloworld"
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
|