![]() |
Betrifft: Excel VBA
von: Heiko
Geschrieben am: 24.11.2014 10:06:57
Hallo,
poste hier das erste Mal. Hab folgendes Problem. Ich möchte die Lerrzellen in der Zeile zählen und jedesmal wenn die Bedingung erfüllt wir den Wert von S7 um 1 erhöhen. Falls die Abfrage auf eine Zelle mit eienm Wert trifft soll die Abfrage stoppen. Das klappt soweit auch ganz gut. Nun benötige ich das aber bis Zeile 200. Gibt es eine Möglichkeit das ich den Code nicht 200x tippen muß?
Danke im voraus.
Heiko
Sub leere_zählen() Application.ScreenUpdating = False If Range("q7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("p7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("o7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("n7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("m7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("l7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("k7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("j7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("i7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("h7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("g7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("f7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("e7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If If Range("d7").Value = 0 Then [s7] = [s7] + 1 Else GoTo SP7 End If SP7: Application.ScreenUpdating = True End Sub
![]() ![]() |
Betrifft: AW: Excel VBA
von: hary
Geschrieben am: 24.11.2014 10:39:44
Moin
Versteh ich dich richtig, bei jeder Null eins plus?
Sub Versuch() Dim i As Long With Worksheets("Tabelle1") 'Name anpassen For i = 7 To 200 .Range("S" & i) = .Range("S" & i) + Application.CountIf(.Range("D" & i & ":Q" & i), 0) Next End With End Sub
![]() ![]() |
Betrifft: AW: Excel VBA
von: Heiko
Geschrieben am: 24.11.2014 12:09:29
Danke für die schellen Antworten.
Ich bin VBA Anfänger und versuche mir immer was zusammen zu basteln. Ich hatte schon was von Schleifen gehört, nur wusste ich nicht wie ich es umsetzte.
Zur Frage von Hary eigeinlich 1+ bei jedem Leerfeld.
![]() ![]() |
Betrifft: AW: Excel VBA
von: Heiko
Geschrieben am: 24.11.2014 12:27:59
Sorry habe eben bemerkt das ich jeden einzel antwotrten muß.Das mit den Schleifen war nicht für dich.
![]() ![]() |
Betrifft: AW: Excel VBA
von: Heiko
Geschrieben am: 24.11.2014 12:43:42
Ich hab mich wahrscheinlich nicht richtig ausgedrückt. Ich möchte nicht alle leeren Zellen zählen sondern die die leeren Zellen von rechts nach links bis eine Zelle mit einem Eintrag kommt. In Spalte S (z.B.) brauche ich dann die Auswertung für jede Zeile.
![]() ![]() |
Betrifft: AW: Excel VBA
von: hary
Geschrieben am: 24.11.2014 13:03:34
Moin
Passt es so?
Sub LeereVonRechts() Dim letzte As Long Dim i As Long With Worksheets("Tabelle1") 'Blattname evtl anpassen For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row letzte = .Cells(i, 9).End(xlToLeft).Column + 1 .Cells(i, 19) = 10 - letzte Next End With End Sub
![]() ![]() |
Betrifft: AW: Excel VBA
von: Heiko
Geschrieben am: 24.11.2014 13:32:39
Danke Hary,
das funktioniert so prima. Was muß ich ändern wenn ich sowohl die Spaltenzahl als auch die Zeilenzahl ändern möchte.
Das war nur ein Beispiel (Auszug aus meiner Tabelle).
Maine Daten stehen eigentlich von Spalte D bis Q und in S ist die Auswertung.
Die Zeilen 2 bis 200 muß ich auswerten.
![]() ![]() |
Betrifft: AW: Excel VBA
von: hary
Geschrieben am: 24.11.2014 14:03:27
Moin
In SpalteC stehen die Pumpen.Hilft dir das weiter?
Sub LeereVonRechts() Dim letzte As Long Dim i As Long With Worksheets("Tabelle1") 'Blattname evtl anpassen For i = 2 To .Cells(Rows.Count, 3).End(xlUp).Row 'letzte belegte Zellennummer in SpalteC letzte = Application.Max(3, .Cells(i, 17).End(xlToLeft).Column) ' 17 = SpalteQ .Cells(i, 19) = 17 - letzte Next End With End Sub
![]() ![]() |
Betrifft: AW: Excel VBA
von: Heiko
Geschrieben am: 24.11.2014 14:14:00
Danke funktioniert super. Sehe ich das richtig das du das dynamisch angelegt hast? Also wenn Zeilen dazu kommen wird automatisch die Letzte gesucht?
Sorry bin da nicht so der Profi. Hast mir sehr weiter geholfen.
![]() ![]() |
Betrifft: AW: Excel VBA
von: hary
Geschrieben am: 24.11.2014 14:18:04
Moin Heiko
"Also wenn Zeilen dazu kommen wird automatisch die Letzte gesucht?"
Jepp, so ist es.
gruss hary
![]() ![]() |
Betrifft: AW: Excel VBA
von: Heiko
Geschrieben am: 24.11.2014 10:43:29
Hier vieleicht noch ein Auszug der Tabelle. Ich muß die leeren Zellen von rechts nach links zählen bis ich auf einen Wert treffe. Die Anzahl gibt dann die letzte GÜ an.
https://www.herber.de/bbs/user/93974.xlsm
![]() ![]() |
Betrifft: AW: Excel VBA
von: Rudi Maintaire
Geschrieben am: 24.11.2014 10:44:30
Hallo,
schon mal was von Schleifen gehört?
Sub aa() Dim z As Long, s As Long For z = 7 To 200 For s = 4 To 17 If Cells(z, s) = "" Then Cells(z, 19) = Cells(z, 19) + 1 Else Exit For End If Next s Next z End Sub
![]() ![]() |
Betrifft: AW: Excel VBA
von: Heiko
Geschrieben am: 24.11.2014 12:30:33
Hallo Rudi,
ich hab schon mal was gehört von Schleifen, aber umsetzen kann ich das nicht. Muß ich hier jeden einzeln antworten oder könnt ihr auch das lesen was die anderen zu diesem Thema schreiben?
Ich hab mich wahrscheinlich nicht richtig ausgedrückt. Ich möchte nicht alle leeren Zellen zählen sondern die die leeren Zellen von rechts nach links bis eine Zelle mit einem Eintrag kommt. In Spalte S (z.B.) brauche ich dann die Auswertung für jede Zeile.
Wie schon geschrieben bin ich kein VBA Profi. Bitte zu eueren Antworten noch ganz kurz erklären wie ich den Code anwende. Im Moment habe ich mir nur ein symbol im Schnellzugriff eingerichtet, wo ich das Makro abrufe.
Gruß Heiko
![]() ![]() |
Betrifft: AW: Excel VBA
von: Rudi Maintaire
Geschrieben am: 24.11.2014 12:54:11
Hallo,
oder könnt ihr auch das lesen was die anderen zu diesem Thema schreiben?
selbstverständlich. Du kannst es doch auch.
Sub aa() Dim z As Long, s As Long For z = 7 To 200 For s = 17 To 4 Step -1 If Cells(z, s) = "" Then Cells(z, 19) = Cells(z, 19) + 1 Else Exit For End If Next s Next z End SubGruß
![]() ![]() |
Betrifft: AW: Excel VBA
von: Matthias L
Geschrieben am: 24.11.2014 10:53:21
Hallo
Option Explicit Sub leere_zählen() Dim MyRow&, MyCol& Application.ScreenUpdating = False For MyRow = 7 To 15 'Zeile 7-15 anpassen For MyCol = 4 To 17 If Cells(MyRow, MyCol) = "" Then Cells(MyRow, 19) = Cells(MyRow, 19) + 1 Next Next End Subhttps://www.herber.de/bbs/user/93976.xlsm
![]() ![]() |
Betrifft: AW: Excel VBA
von: Heiko
Geschrieben am: 24.11.2014 12:25:08
Ich hab mich wahrscheinlich nicht richtig ausgedrückt. Ich möchte nicht alle leeren Zellen zählen sondern die die leeren Zellen von rechts nach links bis eine Zelle mit einem Eintrag kommt. In Spalte S (z.B.) brauche ich dann die Auswertung für jede Zeile.
Wie schon geschrieben bin ich kein VBA Profi. Bitte zu eueren Antworten noch ganz kurz erklären wie ich den Code anwende. Im Moment habe ich mir nur ein symbol im Schnellzugriff eingerichtet, wo ich das Makro abrufe.
Gruß Heiko
![]() |