Werte in Spalte hochzählen

Moderator: ModerationP

Werte in Spalte hochzählen

Beitragvon crumb » 27. Okt 2021, 20:26

Hallo zusammen,

habe hier schon ein paar Mal meine Probleme durch andere Beiträge lösen können und finde die Antworten wirklich super hilfreich.

Jetzt komme ich bei einem Thema nicht weiter und ersuche (in meinem ersten Thema) Eure Hilfe.

Ich habe in er Spalte B in unterschiedlichen Zeilen und in unterschiedlichen Abständen einen Wert (z.B. "X") stehen. Ich will nun über ein Makro diese Werte von oben nach unten von 1 bis 3 durchnummerieren und überschreiben. Die leeren Zellen sollen leer bleiben und das Makro soll nach leeren Zellen weiter hochzählen. Ist das dritte x erreicht soll das vierte x wieder mit 1 wiedergegeben werden usw.

Vielleicht kann mir jemand helfen.

Danke schon mal.

Stefan
crumb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 27. Okt 2021, 20:15

Re: Werte in Spalte hochzählen

Beitragvon {Boris} » 27. Okt 2021, 22:43

Hi,

eine Formellösung:

In C1 (Hilfsspalte):

=WENN(B1="x";REST(ZÄHLENWENN(B$1:B1;"x")-1;3)+1;"")

und runterkopieren.
Grüße Boris
Benutzeravatar
{Boris}
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1684
Registriert: 14. Okt 2007, 10:16
Wohnort: Düsseldorf

Re: Werte in Spalte hochzählen

Beitragvon crumb » 28. Okt 2021, 05:56

Hallo Boris,

das löst das beschriebene Problem einwandfrei. Vielen Dank dafür.

Habe jetzt nur noch das Problem, dass ich das gerne in ca. 40 benachbarten Spalten wiederholen möchte.

Dachte daher zuerst an ein überschreiben der Werte und an eine Schleife. Hat dazu jemand noch eine Idee?.

Danke!
crumb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 27. Okt 2021, 20:15

Re: Werte in Spalte hochzählen

Beitragvon {Boris} » 28. Okt 2021, 09:35

Hi,

dann z.B. so:

Code: Alles auswählen
Sub eins_zwei_drei()
Dim x As Long, y As Byte, C As Range
y = 1
For x = 2 To 40 'Schleife von Spalte 2(B) bis Spalte 40 (AN)
    'Specialcells bedingt, dass in den angegebenen Spalten je mindestens 1 Konstante existiert
    For Each C In Columns(x).SpecialCells(xlCellTypeConstants)
        C = y
        y = y + 1
        If y = 4 Then y = 1
    Next C
    y = 1
Next x
End Sub


[EDIT] Hatte beim Spaltenwechsel vergessen, y wieder auf 1 zu setzen. Habe ich jetzt im Code ergänzt.
Grüße Boris
Benutzeravatar
{Boris}
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1684
Registriert: 14. Okt 2007, 10:16
Wohnort: Düsseldorf

Re: Werte in Spalte hochzählen

Beitragvon crumb » 29. Okt 2021, 05:48

Perfekt, Danke!

Letzte Frage: Kann ich in einer bestimmten Zeile starten (z.B. 2) und in einer bestimmten Zeile die Schleife beenden?
crumb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 27. Okt 2021, 20:15

Re: Werte in Spalte hochzählen

Beitragvon {Boris} » 29. Okt 2021, 07:54

Hi,

dann so:

Code: Alles auswählen
Sub eins_zwei_drei()
Dim x As Long, y As Byte, C As Range
Const lngStartZeile As Long = 5 'Hier die Startzeile vorgeben
Const lngEndZeile As Long = 30 'Hier die Endzeile vorgeben
y = 1
For x = 2 To 40 'Schleife von Spalte 2(B) bis Spalte 40 (AN)
    'Specialcells bedingt, dass in den angegebenen Spalten je mindestens 1 Konstante existiert
    For Each C In Range(Cells(lngStartZeile, x), Cells(lngEndZeile, x)).SpecialCells(xlCellTypeConstants)
        C = y
        y = y + 1
        If y = 4 Then y = 1
    Next C
    y = 1
Next x
End Sub
Grüße Boris
Benutzeravatar
{Boris}
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1684
Registriert: 14. Okt 2007, 10:16
Wohnort: Düsseldorf

Re: Werte in Spalte hochzählen

Beitragvon crumb » 29. Okt 2021, 17:51

Voll gut! Vielen lieben Dank, Boris!
crumb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 27. Okt 2021, 20:15

Re: Werte in Spalte hochzählen

Beitragvon Gast » 03. Nov 2021, 06:38

So jetzt doch noch eine Frage: Kann ich Leerzeilen mit specialcells auch irgendwie überspringen ohne, dass es zum Fehler kommt?
Gast
 

Re: Werte in Spalte hochzählen

Beitragvon crumb » 03. Nov 2021, 06:41

Gast hat geschrieben:So jetzt doch noch eine Frage: Kann ich Leerzeilen mit specialcells auch irgendwie überspringen ohne, dass es zum Fehler kommt?


Ich meine natürlich leere Spalten, also Spalten ohne Konstante.
crumb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 27. Okt 2021, 20:15

Re: Werte in Spalte hochzählen

Beitragvon HKindler » 03. Nov 2021, 11:39

Hi,

z.B. so:
Code: Alles auswählen
Sub eins_zwei_drei()
Dim x As Long, y As Byte, C As Range, S As Range
Const lngStartZeile As Long = 5 'Hier die Startzeile vorgeben
Const lngEndZeile As Long = 30 'Hier die Endzeile vorgeben
y = 1
For x = 2 To 40 'Schleife von Spalte 2(B) bis Spalte 40 (AN)
    Set S = Nothing
    On Error Resume Next
        Set S = Range(Cells(lngStartZeile, x), Cells(lngEndZeile, x)).SpecialCells(xlCellTypeConstants)
    On Error GoTo 0
    If Not S Is Nothing Then
        For Each C In Range(Cells(lngStartZeile, x), Cells(lngEndZeile, x)).SpecialCells(xlCellTypeConstants)
            C = y
            y = y + 1
            If y = 4 Then y = 1
        Next C
    End If
    y = 1
Next x
End Sub
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6437
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: Werte in Spalte hochzählen

Beitragvon crumb » 04. Nov 2021, 07:30

klappt! Besten Dank!
crumb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 27. Okt 2021, 20:15

Re: Werte in Spalte hochzählen

Beitragvon crumb » 19. Nov 2021, 18:24

Noch eine Frage: Kann ich die Schleife anstatt für eine Konstante für einen Konkreten Wert (z.B. „x“) laufen lassen?

Danke schon mal!
crumb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 27. Okt 2021, 20:15


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: HKindler und 16 Gäste