A Microsoft táblázatkezelő szoftvercsaládja, amely eszközöket tartalmaz az adatok elemzéséhez, diagramon való megjelenítéséhez és kommunikálásához.
Szeretném, ha az Excel táblázat egy cellája megadná, hogy egy általam meghatározott tartományban hány darab olyan cella van, amelyben a betűszín piros.
Sajnos, nem találtam eddig olyan képletet, amely megoldja ezt.
Szintén hasznos lenne a számomra, ha össze tudnám adni egy kiválasztott tartomány adott színű celláinak tartalmát. (pl. a pirosakat). A súgóban erre sem találtam megoldást.
Kérem segítségét!
Előre is köszönöm!
Sajnos erre a problémára nincs beépített Excel függvény. De VB kóddal megoldható.
Vesd fel a problémádat a Prog.hu-n.
Function SzumBetuszin(Tartomany As Range, RefBetuszin As Range) As Variant
On Error GoTo SzumBetuszin_Err
' A betűszín számoló algoritmus nem működik a tartományban
' feltételes formázással színezett betűszínekre!
Dim RefSzin As Long ' A referencia cella betűszíne
Dim xTart1 As Range ' Tartomány első része
Dim xTart2 As Range ' Tartomány második része
Dim xByt As Byte
Dim xStr As String
Dim RowStr As Long ' Row - Sorok
Dim RowEnd As Long ' Row
Dim ColStr As Long ' Column - Oszlopok
Dim ColEnd As Long ' Column
Dim xRow As Long ' Row
Dim xCol As Long ' Column
Dim xSum As Long ' Összegzés
If InStr(1, RefBetuszin.Address, ":", vbBinaryCompare) > 0 Then
SzumBetuszin = "#A RefBetűszín nem lehet tartomány!"
Exit Function
End If
RefSzin = Cells(RefBetuszin.Row, RefBetuszin.Column).Font.Color
xStr = Tartomany.Address
xStr = Replace(xStr, "$", "", 1, , vbBinaryCompare)
xByt = InStr(1, xStr, ":", vbBinaryCompare)
If xByt = 0 Then
' Egy cella
RowStr = Range(xStr).Row
RowEnd = RowStr
ColStr = Range(xStr).Column
ColEnd = RowStr
Else
' Tartomány
Set xTart1 = Range(Left(xStr, xByt - 1))
Set xTart2 = Range(Right(xStr, Len(xStr) - xByt))
RowStr = xTart1.Row
RowEnd = xTart2.Row
ColStr = xTart1.Column
ColEnd = xTart2.Column
End If
xSum = 0
For xCol = ColStr To ColEnd ' Oszlopok
For xRow = RowStr To RowEnd ' Sorok
If RefSzin = Cells(xRow, xCol).Font.Color Then xSum = xSum + 1
Next xRow
Next xCol
SzumBetuszin = xSum
Exit Function
'------------------------------------------------------------------------------
SzumBetuszin_Err:
MsgBox "#" & Err.Number & vbCrLf & _
Err.Description, vbCritical, "Function SzumBetuszin(Tartomany As Range, RefBetuszin As Range) As Variant"
End Function