Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA

Excel VBA
24.11.2014 10:06:57
Heiko
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

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA
24.11.2014 10:39:44
hary
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

gruss hary

AW: Excel VBA
24.11.2014 12:09:29
Heiko
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.

Anzeige
AW: Excel VBA
24.11.2014 12:27:59
Heiko
Sorry habe eben bemerkt das ich jeden einzel antwotrten muß.Das mit den Schleifen war nicht für dich.

AW: Excel VBA
24.11.2014 12:43:42
Heiko
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.

AW: Excel VBA
24.11.2014 13:03:34
hary
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

gruss hary

Anzeige
AW: Excel VBA
24.11.2014 13:32:39
Heiko
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.

AW: Excel VBA
24.11.2014 14:03:27
hary
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

gruss hary

Anzeige
AW: Excel VBA
24.11.2014 14:14:00
Heiko
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.

AW: Excel VBA
24.11.2014 14:18:04
hary
Moin Heiko
"Also wenn Zeilen dazu kommen wird automatisch die Letzte gesucht?"
Jepp, so ist es.
gruss hary

AW: Excel VBA
24.11.2014 10:43:29
Heiko
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

Anzeige
AW: Excel VBA
24.11.2014 10:44:30
Rudi
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

Gruß
Rudi

AW: Excel VBA
24.11.2014 12:30:33
Heiko
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

Anzeige
AW: Excel VBA
24.11.2014 12:54:11
Rudi
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 Sub
Gruß
Rudi

AW: Excel VBA
24.11.2014 10:53:21
Matthias
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 Sub
https://www.herber.de/bbs/user/93976.xlsm
Gruß Matthias

Anzeige
AW: Excel VBA
24.11.2014 12:25:08
Heiko
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige