2.5k Aufrufe
Gefragt in Tabellenkalkulation von mischi1978 Einsteiger_in (55 Punkte)
Hallo,

ich habe mal wieder ein Excel Problem. Eins gelöst, und wieder was Neues.

Ich habe in einer Zeile an verschieden Stellen ein X.
Links neben der Reihe ist eine Zelle mit einem Lagerbestand von einer Stückzahl (Beispiel 2 Stück). Jetzt sollen von links nach rechts laufend 2 X farblich unterlegt werden mit gelb.

Lagerbestand 5 = 5 Kreuze mit Hintergrundfarbe gelb unterlegen.


Schön wenn ihr mir wieder helfen könntet.
Leider kann ich euch wohl nie in Sachen Excel und Makros helfen.

Gruß Mischi

8 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Mischi,

Warum fragst Du so, dass es keiner versteht?

In Excel hat jede Zelle eine Adresse, somit kann man doch das Kind
beim Namen nennen.
D h. wo stehen Kreuze und wo stehen Lagerbestände und nach
welchen Kriterien sollen welche Zellen gefärbt werden.

Wenn Du es mit Worten nicht ausdrücken kannst, dann lade eine
Tabelle hoc,h in der man unmissverständlich Dein Vorhaben erkennen
kann.

Gruß
Rainer
0 Punkte
Beantwortet von mischi1978 Einsteiger_in (55 Punkte)
Hallo Rainer,

und ich hab gedacht es wäre schon gut erklärt :-(.

Hier der Link

Optisch schon so dargestellt, wie ich es gerne hätte.


http://www.file-upload.net/download-1960658/Excel_test1.xls.html

Gruß Mischi
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Mischi,

nachfolgendes Makro sollte das machen, was Du Dir vorgestellt hast.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Auswerten()
Dim lngRow As Long
Dim intColumn As Integer
Dim intAnzahl As Integer
Dim intBearbeitet As Integer

Cells.Interior.ColorIndex = xlNone

For lngRow = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
intAnzahl = Cells(lngRow, 1)
intBearbeitet = 0
For intColumn = 2 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
If UCase(Cells(lngRow, intColumn)) = UCase("x") Then
Cells(lngRow, intColumn).Interior.ColorIndex = 6
intBearbeitet = intBearbeitet + 1
If intAnzahl = intBearbeitet Then Exit For
End If
Next
Next

End Sub


MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von mischi1978 Einsteiger_in (55 Punkte)
Hallo Oliver,

Dein Makro hat super geklappt.

Vielen DANK

Gruß Mischi
0 Punkte
Beantwortet von mischi1978 Einsteiger_in (55 Punkte)
Hallo Oliver,

vielleicht kannst Du doch noch mal helfen.
Wenn ich als Lagerbestand eine 0 oder eine leere Zelle habe markiert das Makro alle in der Reihe vorhandenen X.

Da sollte es eigentlich keine markieren und gleich die nächste Reihe auswerten.

Hast Du dafür eine Lösung.

Vorab schon mal danke

Gruß Mischi und einen schönen guten Abend
0 Punkte
Beantwortet von
Hi,

Ändere den Code aus AW3 z.B. wie folgt:

For lngRow = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
If Cells(lngRow, 1).Value <> 0 And IsNumeric(Cells(lngRow, 1)) Then
intAnzahl = Cells(lngRow, 1)
intBearbeitet = 0
For intColumn = 2 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
If UCase(Cells(lngRow, intColumn)) = UCase("x") Then
Cells(lngRow, intColumn).Interior.ColorIndex = 6
intBearbeitet = intBearbeitet + 1
If intAnzahl = intBearbeitet Then Exit For
End If
Next
End If
Next


bye
malSchauen
0 Punkte
Beantwortet von mischi1978 Einsteiger_in (55 Punkte)
Hallo malSchaun,

danke für die Hilfe. Es klappt wie ich es wollte.

Gruß Mischi
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

ohne Makro mit bedingter Formatierung

"Formel ist"
=UND(ZÄHLENWENN($B2:B2;"X")<=$A2;B2="x")

in B" und dann mit dem Pinsel über sie Zellen ziehen

Gruß

Helmut
...