alle nicht gelben Zellen zählen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox


Excel-Version: 2000
  

Re: alle nicht gelben Zellen zählen

von: Hajo
Geschrieben am: 13.04.2002 - 20:10:22


Hallo Joh@nn

ich kann Dir eigentlich nur wenig Hoffnung auf eine Lösung machen. Das Problem ist die Bedingte Formatierung, die schlecht per VBA ausgewertet werden kann.

Gruß Hajo

  

Re: alle nicht gelben Zellen zählen

von: Klaus-Dieter
Geschrieben am: 13.04.2002 - 20:14:05


Hallo Joh@hann,

ich fürchte das gibt ein Problem, manuell eingefärbte Zellen lassen sich nach der Hintergrundfarbe abfragen. Bei der bedingten Formatierung geht das meines Wissens leider nicht, das heißt, der zurückgegebene Wert entspricht dem der nicht gefärbten Zellen.

Gruß Klaus-Dieter
http://www.klaus-dieter-2000.de
(Excel und VBA speziell für Einsteiger)

  

Re: alle nicht gelben Zellen zählen

von: Hajo
Geschrieben am: 13.04.2002 - 20:19:07


Hallo Klaus Dieter

es ist nicht unmöglich Ich habe schon mal ein Code gesehen um eine Bedingung auszulesen und der war schon recht umfangreich und es gibt ja drei Bedingungen.

Gruß Hajo

  

eigentlich will ich nur Arbeitstage zählen

von: Joh@nn
Geschrieben am: 13.04.2002 - 20:32:39


gibt es da eine Möglichkeit?

  

Hallo Hajo...

von: Klaus-Dieter
Geschrieben am: 13.04.2002 - 20:33:50


Hallo Hajo,

das würde mich interessieren. Kannst Du dazu näheres mitteilen? Eine Abfrage nach Interior.ColorIndex liefert bei bedingter Formatierung und bei unveränderten Zellen immer den Wert -4142.

Gruß Klaus-Dieter

  

Re: eigentlich will ich nur Arbeitstage zählen

von: Klaus-Dieter
Geschrieben am: 13.04.2002 - 20:37:09


Hallo Joh@nn,

das hört sich doch gut an, Deine Tabelle enthält sicher ein Datum, da lassen sich dann Wochentage erkennen. Man müßte jetzt nur noch wissen, Motag bis Freitag, Montag bis Sonnabend, oder wie?

Gruß Klaus-Dieter

  

Re: Hallo

von: Hajo
Geschrieben am: 13.04.2002 - 20:39:05


Hallo Klaus Dieter

ich habe mal folgenden Code in einem Forum gefunden und nicht weiter getestet.


Sub MachWas()
    Dim Zelle As Range: Zeile = 1
    For Each Zelle In Worksheets("Tabelle1").UsedRange
        If Zelle.Interior.ColorIndex = 3 Then
            Worksheets("Tabelle1").Rows(Zelle.Row).Copy Destination:=Worksheets("Tabelle2").Range("A" & Zeile)
            Zeile = Zeile + 1
'       Format, Muster Zellen
        ElseIf Cells(Zelle.Row, Zelle.Column).FormatConditions.Parent.Interior.ColorIndex = 3 Then
            Worksheets("Tabelle1").Rows(Zelle.Row).Copy Destination:=Worksheets("Tabelle2").Range("A" & Zeile)
            Zeile = Zeile + 1
'       bedingte Formatierung erkennen
'       noch fehlerhaft es werden alle Zellen kopiert die bei bedingte Formatierung den Hintergrund rot(3)
'       färben sollen auch wenn nicht erfüllt
        ElseIf Cells(Zelle.Row, Zelle.Column).FormatConditions.Item(1).Interior.ColorIndex = 3 Then
            Worksheets("Tabelle1").Rows(Zelle.Row).Copy Destination:=Worksheets("Tabelle2").Range("A" & Zeile)
            Zeile = Zeile + 1
        End If
    Next Zelle
End Sub

Sub test()
'   von JensF
    Dim OP As Long
    Dim Formel As Long
    Dim Farbe As Long
    Dim As Range
    Dim Erfüllt As Boolean
    Set Z = ActiveCell
    Formel = Z.FormatConditions(1).Formula1
    OP = Z.FormatConditions(1).Operator
    Select Case OP
        Case xlGreater
            Erfüllt = (Z.Value > Formel)
        Case xlGreaterEqual
            Erfüllt = (Z.Value >= Formel)
        Case xlLessEqual
            Erfüllt = (Z.Value <= Formel)
        Case xlLess
            Erfüllt = (Z.Value < Formel)
    End Select
    If Erfüllt Then
        MsgBox Z.FormatConditions.Item(1).Interior.ColorIndex
    Else
        MsgBox Z.Font.ColorIndex
    End If
End Sub


Sub MachWas2()
    Dim Zelle As Range
    Dim Formel As Long
    Dim As Range
    Dim Erfüllt As Boolean
    Zeile = 1
    For Each Zelle In Worksheets("Tabelle1").UsedRange
        If Zelle.Interior.ColorIndex = 3 Then
            Worksheets("Tabelle1").Rows(Zelle.Row).Copy Destination:=Worksheets("Tabelle2").Range("A" & Zeile)
            Zeile = Zeile + 1
'       Format, Muster Zellen
        ElseIf Cells(Zelle.Row, Zelle.Column).FormatConditions.Parent.Interior.ColorIndex = 3 Then
            Worksheets("Tabelle1").Rows(Zelle.Row).Copy Destination:=Worksheets("Tabelle2").Range("A" & Zeile)
            Zeile = Zeile + 1
'       bedingte Formatierung erkennen
'       noch fehlerhaft es werden alle Zellen kopiert die bei bedingte Formatierung den Hintergrund rot(3)
'       färben sollen auch wenn nicht erfüllt
        ElseIf Cells(Zelle.Row, Zelle.Column).FormatConditions.Item(1).Interior.ColorIndex = 3 Then
            Set Z = Cells(Zelle.Row, Zelle.Column)
            Formel = Z.FormatConditions(1).Formula1
            OP = Z.FormatConditions(1).Operator
            Select Case OP
                Case xlGreater
                    Erfüllt = (Z.Value > Formel)
                Case xlGreaterEqual
                    Erfüllt = (Z.Value >= Formel)
                Case xlLessEqual
                    Erfüllt = (Z.Value <= Formel)
                Case xlLess
                    Erfüllt = (Z.Value < Formel)
            End Select
            If Erfüllt Then
                Worksheets("Tabelle1").Rows(Zelle.Row).Copy Destination:=Worksheets("Tabelle2").Range("A" & Zeile)
                Zeile = Zeile + 1
            End If
        End If
    Next Zelle
End Sub

Gruß Hajo

  

Re: eigentlich will ich nur Arbeitstage zählen

von: Joh@nn
Geschrieben am: 13.04.2002 - 20:43:33


Hi Klaus-Dieter,
Jau Datum ist da.
in B4 wird der 01.01.2003 eingetragen, allerdings so formatiert (TT.)
In C4 steht =B4+1 auch (TT.)formatiert.
Die anderen Zellen genauso.
Samstag und Sonntage sollen nicht mitgezählt werden.(Feiertage auch nicht,aber das ist zuviel verlangt.
Gruß
Joh@nn

  

Re: eigentlich will ich nur Arbeitstage zählen

von: Klaus-Dieter
Geschrieben am: 13.04.2002 - 21:20:39


Hallo Joh@nn,

noch 'ne Frage: was genau willst Du zählen, und wo soll das Ergebnis stehen?

Ich habe da noch einen Vorschlag, auf meiner Internetseite gibt es unter Beispieltabellen (Excel) einen Urlaubsplaner zum Download. Wenn Du willst, lade Dir das Ding mal runter und sieh es Dir an. Möglicherweise kommt das dem, was Du suchst, schon recht nahe. Bei Bedarf würde ich Dir das anpassen.

Gruß Klaus-Dieter
http://www.klaus-dieter-2000.de
(Excel und VBA speziell für Einsteiger)

  

Re: Hallo

von: Klaus-Dieter
Geschrieben am: 13.04.2002 - 21:37:05


Hallo Hajo,

vielen Dank für's erste. Habe mir das mal kopiert und werde es ansehen.

Gruß Klaus-Dieter

  

Re: eigentlich will ich nur Arbeitstage zählen

von: Joh@nn
Geschrieben am: 13.04.2002 - 22:01:12


>noch 'ne Frage: was genau willst Du zählen, und wo soll das Ergebnis stehen?

In B3

>Ich habe da noch einen Vorschlag, auf meiner Internetseite.
Habe mir was ähnliches gebastelt für über 100 Mitarbeiter ohne Macro (dürfen wir nicht verwenden).
Hat mir leider nicht weitergeholfen.
Mache mein 3. Bier auf,möglicherweise hilft das ;o))
Gruß
Joh@nn

  

Re: eigentlich will ich nur Arbeitstage zählen

von: Hajo
Geschrieben am: 13.04.2002 - 22:08:32


Hallo Joh@nn

vielleicht hilft folgendes

272. Arbeitstage ausrechnen von Datum bis Datum
z.B. mit der Funktion Nettoarbeitstage. Du mußt aber vorher im Menü Extra-Add-In-Manager die Analyse-Funktionen aktivieren.
=NETTOARBEITSTAGE(A1;A30;{"13.4.01";"16.4.01"})
A1 =erster Tag
A30=letzter Tag
In den Klammern die Feiertage
lt Excel-Hilfe so: (A1, A2 die Datumangaben)
=NETTOARBEITSTAGE(A1;A2;{"24.12.1999";"03.01.2000"})
besser: lege einen Bereich fest(z.B."Feiertage") , in den du alle Feiertage schreibst und dann
=NETTOARBEITSTAGE(A1;A2;Feiertage)


Gruß Hajo

  

Arbeitstage zählen usw.

von: geri
Geschrieben am: 14.04.2002 - 09:05:05


kopiere beide Macros in Modul, wenn Cursor auf gefärbte Zelle steht und MAcro Farbnummer startest erhälst du die Farbe-Nummer und mit Formel in Zelle wird gezählt

Option Explicit

Function Farbsumme(Bereich As Range, Farbe As Integer)
Application.Volatile ' damit bei änderung ausgeführt wird
Dim Zelle
Farbsumme = 0
For Each Zelle In Bereich
If Zelle.Interior.ColorIndex = Farbe Then
Farbsumme = Farbsumme + 1
End If
Next
End Function

Sub Farbnummer()
Dim i As Integer
i = ActiveCell.Interior.ColorIndex
MsgBox " Farbnummer " & i
End Sub

die Formel in Zelle lautet die letzte Zahl ist Farbnummer
=Farbsumme(A$1:A$60;40)der Bereich im Beispiel ist Zelle A1 - A 60


habe dies auch aus Forum

geri

  

Re: Arbeitstage zählen usw.

von: Hajo
Geschrieben am: 14.04.2002 - 09:30:03


Hallo Geri

Joh@nn hat leider erst in einem späteren Beitrag geschrieben, das keine Makro verwendet werden dürfen. Dieser Punkt war wohl nicht so wichtig.

Gruß Hajo

nach unten

Betrifft: alle nicht gelben Zellen zählen
von: Joh@nn
Geschrieben am: 13.04.2002 - 20:07:17

Hallo,
Ich will alle nicht gelben Zellen zählen.
Die Zellen werden gelb entweder durch bedingte Formatierung oder schlicht manuel formatiert.
Alle anderen Zellen bleiben weiß.
danke und schönes Wochenende
Joh@nn

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "alle nicht gelben Zellen zählen"