Habs nicht weiter getestet, sollte aber funktionieren:
Spoiler anzeigen
; #Function# =================================================================================================================================================
; Function ......: _MathInColumn
; Description ...: Performs a mathematic operation in a Column from lowest to highest specified index
; Parameter(s) ..: $Array - Array to search in
; $iSubItem = 0 - Columnindex to operate in
; $iStart = 0 - Rowindex to start mathematic operation
; $iEnd = -1 - Rowindex to end mathematic operation
; $sAction = "+" - Mathematic operation to do (possible: "+","-")
; $sSearch = "" - If specified, operation is only performed in Rows where $sSearch appears
; $iSearch = 0 - Columnindex to search $sSearch in
; $iCase = 0 - Casesensitive (possible: 0,1)
; $iPartial = 0 - Partial search (possible: 0,1)
; Requirement ...: Array.au3
; Return values .: Success - Result of mathematic operation (if division by 0 an empty String!)
; Failure - Returns an empty string and sets @error:
; 0 - $Array is not an array
; 1 - $iSubItem is negative, not an integer or out of Bounds
; 2 - $iStart is negative, not an integer or out of Bounds
; 3 - $iEnd is negative, not an integer or out of Bounds
; 4 - $iStart is higher than $iEnd
; 5 - $sAction is invalid
; 6 - $iSearch is negative, not an integer or out of Bounds
; 7 - $sSearch not found
; User CallTip: .: ($Array[, $iSubItem = 0[, $iStart = 0[, $iEnd = -1[, $sAction = "+"[, $sSearch = ""[, $iSearch = 0[, $iCase = 0 [,$iPartial = 0]]]]]]]])
; Author(s) .....: Johannes Schirmer
; Date ..........: 08. July 2008
; Note(s) .......: Not testet yet *g*
; ============================================================================================================================================================
Func _MathInColumn(ByRef $Array, $iSubItem = 0, $iStart = 0, $iEnd = -1, $sAction = "+", $sSearch = "", $iSearch = 0, $iCase = 0 ,$iPartial = 0)
If Not IsArray($Array) Or UBound($Array,0) > 2 Then Return SetError(0)
If (Not IsInt($iSubItem)) Or ($iSubItem < 0) Or ((UBound($Array,0) = 2) And ($iSubItem > UBound($Array,2) - 1)) Then Return SetError(1)
If $iEnd = -1 Then $iEnd = UBound($Array) - 1
If (Not IsInt($iStart)) Or ($iStart < 0) Or ($iStart > UBound($Array,1) - 1) Then Return SetError(2)
If (Not IsInt($iEnd)) Or ($iEnd < 0) Or ($iEnd > UBound($Array,1) - 1) Then Return SetError(3)
If $iStart > $iEnd Then Return SetError(4)
If ($sAction <> "+") And ($sAction <> "-") Then Return SetError(5)
If (Not IsInt($iSearch)) Or ($iSearch < 0) Or ((UBound($Array,0) = 2) And ($iSearch > UBound($Array,2) - 1)) Then Return SetError(6)
Local $Value = 0
If $sSearch <> "" Then
If $iEnd = 0 Then
If UBound($Array,0) = 1 Then
If $iPartial = 1 Then
If StringInStr($Array[0],$sSearch,$iCase) Then
Return $Array[0]
Else
Return
EndIf
Else
If $iCase = 1 Then
If $Array[0] == $sSearch Then
Return $Array[0]
Else
Return
EndIf
Else
If $Array[0] = $sSearch Then
Return $Array[0]
Else
Return
EndIf
EndIf
EndIf
Else
If $iPartial = 1 Then
If StringInStr($Array[0][$iSearch],$sSearch,$iCase) Then
Return $Array[0][$iSubItem]
Else
Return 0
EndIf
Else
If $iCase = 1 Then
If $Array[0][$iSearch] == $sSearch Then
Return $Array[0][$iSubItem]
Else
Return 0
EndIf
Else
If $Array[0][$iSearch] = $sSearch Then
Return $Array[0][$iSubItem]
Else
Return 0
EndIf
EndIf
EndIf
EndIf
EndIf
Local $index = _ArrayFindAll($Array,$sSearch,$iStart,$iEnd,$iCase,$iPartial,$iSearch)
If Not IsArray($index) Then Return SetError(7)
If UBound($Array,0) = 1 Then
For $i = 0 To UBound($index,1) - 1
$Value = Execute($Value & $sAction & $Array[$index[$i]])
Next
Return $Value
Else
For $i = 0 To UBound($index,1) - 1
$Value = Execute($Value & $sAction & $Array[$index[$i]][$iSubItem])
Next
Return $Value
EndIf
Else
If UBound($Array,0) = 1 Then
For $i = $iStart To $iEnd
$Value = Execute($Value & $sAction & $Array[$i])
Next
Return $Value
Else
For $i = $iStart To $iEnd
$Value = Execute($Value & $sAction & $Array[$i][$iSubItem])
Next
Return $Value
EndIf
EndIf
EndFunc
ist meine erste veröffentlichte Funktion, hab sie aber noch nicht weiter getestet...
Edit1:
Einige Anpassungen: Array wird per ByRef übergeben und weitere Anpassungen...