Function AddDataToArray(vArray() As Variant, Optional sFieldAndValue As String) As Variant()
'sFieldAndValue = FieldName,FieldValue
'OR
'sFieldAndValue = FieldName1,FieldName2,FieldName3...
Dim arrS() As String, s As String
Dim tempArr()
Dim j As Long, k As Long, i As Long
Dim OD1 As Object: Set OD1 = CreateObject("Scripting.Dictionary"): OD1.CompareMode = 1
Dim bCombineCols As Boolean
arrS() = Split(sFieldAndValue, ",", , 1)
vArray() = RefactorArray(vArray(), , arrS(0))
lastCol = UBound(vArray, 2)
If UBound(arrS) > 1 Then
bCombineCols = True
Else
bCombineCols = False
End If
If Not bCombineCols Then
For i = 2 To UBound(vArray)
vArray(i, lastCol) = arrS(1)
Next
Else
For i = 1 To UBound(arrS)
If Not IsNumeric(arrS(i)) Then
s = s & arrS(i) & ","
Else
s = s & vArray(i, arrS(i)) & ","
End If
Next
s = Left(s, Len(s) - 1)
tempArr() = RefactorArray(vArray(), s)
lastColTemp = UBound(tempArr, 2)
For i = 2 To UBound(tempArr)
For j = 1 To lastColTemp
vArray(i, lastCol) = vArray(i, lastCol) & tempArr(i, j)
Next
Next
End If
AddDataToArray = vArray()
End Function
Function RenameColumnsInArray(vArray() As Variant, sColumnsToChange)
'ColumnName|NewColumnName,ColumnName2|NewColumnName2
Dim OD1 As Object: Set OD1 = CreateObject("Scripting.Dictionary"): OD1.CompareMode = 1
Dim arrS() As String
Dim arrS2() As String
For i = 1 To UBound(vArray, 2)
OD1("col" & "colschanging" & vArray(1, i)) = i
OD1("col" & "colschanging" & i) = vArray(1, i)
Next
arrS() = Split(sColumnsToChange, ",", , 1)
For i = LBound(arrS) To UBound(arrS)
arrS2() = Split(arrS(i), "|", , 1)
xCol = OD1("col" & "colschanging" & arrS2(0))
If Not IsEmpty(xCol) Then
vArray(1, xCol) = arrS2(1)
Else
Debug.Print "Column " & arrS2(0) & " not found."
End If
Next
RenameColumnsInArray = vArray()
End Function
Function arrSplitTwoDimension(sInputString, Optional sDeliminater As String = ",") As Variant()
Dim arrS() As String
arrS() = Split(sInputString, sDeliminater, , 1)
If UBound(arrS) <> -1 Then
ReDim arr(1, UBound(arrS) + 1)
For i = 1 To UBound(arr, 2)
arr(1, i) = arrS(i - 1)
Next
arrSplitTwoDimension = arr()
End If
End Function