Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1252to1256
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

Runterzählen innerhalb einer Spalte

Runterzählen innerhalb einer Spalte
teest
Hey!
Habe wiedermal ein Problem und nirgends etwas dazu gefunden:
Wie muss ich ein Makro aufbauen, welches den Wert aus einer bestimmten Zelle nimmt und danach in einer anderen Spalte runterzählt, Zeile für Zeile bis es bei 1 ist und wieder von vorne beginnt. Das ganze sollte erst stoppen wenn in einer Spalte "B" nichts mehr vorhanden ist.
Meine Idee war es nun einen Loop zu erstellen welcher immer die "Obere Zelle" nimmt un davon -1 abzieht bis er bei 1 ist.
Wie müsste ich das in Code umsetzen?
AW: Runterzählen innerhalb einer Spalte
02.03.2012 12:07:00
Tino
Hallo,
vielleicht geht es so.
kommt als Code in Tabelle
Option Explicit 
 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim ArrayDaten(), n&, nZaehler& 
Dim rngVorgabe As Range 
 
Set rngVorgabe = Range("A1") 'wo die Zahl steht 
 
If Intersect(rngVorgabe, Target) Is Nothing Then Exit Sub 
 
 
ArrayDaten = Range("B4", Cells(Rows.Count, 2).End(xlUp)) 
 
nZaehler = rngVorgabe.Value + 1 
 
For n = 1 To Ubound(ArrayDaten) 
   nZaehler = nZaehler - 1 
   ArrayDaten(n, 1) = nZaehler 
   If nZaehler < 2 Then nZaehler = rngVorgabe.Value + 1 
Next n 
 
Application.EnableEvents = False 
    Range("A4", Cells(Rows.Count, 1)).ClearContents 
    Range("A4").Resize(Ubound(ArrayDaten)) = ArrayDaten 
Application.EnableEvents = True 
End Sub 
 
Die Tabelle ist bei mir so aufgebaut.
 AB
15 
2  
3  
45Daten1
54Daten2
63Daten3
72Daten4
81Daten5
95Daten6
104Daten7
113Daten8
122Daten9
131Daten10
145Daten11
154Daten12
163Daten13
172Daten14
181Daten15
195Daten16
204Daten17
213Daten18
222Daten19
231Daten20
245Daten21
254Daten22
263Daten23
272Daten24
281Daten25
295Daten26
304Daten27
313Daten28
322Daten29

Gruß Tino
Anzeige
AW: Runterzählen innerhalb einer Spalte
02.03.2012 12:08:37
Rudi
Hallo,
dafür brauchst du doch kein Makro.
 ABC
25x5
3 x4
4 x3
5 x2
6 x1
7 x5
8 x4
9 x3
10 x2
11 x1
12 x5
13 x4

ZelleFormel
C2=A2
C3=WENN(C2=1;A$2;C2-1)
C4=WENN(C3=1;A$2;C3-1)

Gruß
Rudi
Anzeige
AW: Runterzählen innerhalb einer Spalte
02.03.2012 13:36:29
teest
Ich denke ich brauche das als Makro weil die Zahl die sich Runterzählen soll 1. Variabel ist und 2. Im Normalfall etwa bei 600 liegt und sich so lang runterzählen muss bis sie so an die 40'000 Daten durchhat.
Danke für den obigen Code, hab ihn nun auf meine Datei passend abgeändert und erhalte den Fehler:
"Argument ist nicht optional!"
was mache ich Falsch?
Und was meinst du mit den "Code in die Tabelle" einfügen? wenn ich auf die richtigen Sheets verweise kommt es nicht darauf an wo er steht, oder?

Option Explicit
Sub countdown(ByVal Target As Range)
Dim ArrayDaten(), n&, nZaehler&
Dim rngVorgabe As Range
Set rngVorgabe = Sheets("Auswertung").Range("N53") 'wo die Zahl steht
If Intersect(rngVorgabe, Target) Is Nothing Then Exit Sub
ArrayDaten = Sheets("data").Range("V2", Cells(Rows.Count, 2).End(xlUp))
nZaehler = rngVorgabe.Value + 1
For n = 1 To UBound(ArrayDaten)
nZaehler = nZaehler - 1
ArrayDaten(n, 1) = nZaehler
If nZaehler 

Anzeige
bin unterwegs...
02.03.2012 13:56:36
Tino
Hallo,
vielleicht kann ein anderer einspringen.
Gruß Tino
AW: Runterzählen innerhalb einer Spalte
02.03.2012 14:47:19
Reinhard
Hallo Teest,
bau die Tabelle die NoNet zeigte nach und teste daran seinen Code.
Dann sage was du verbessern willst.
Und, ggfs. lade hier deine mappe hoch und erklär anhand von ihr genauer was du willst.
Auch mir ist unklar ob du Vba brauchst oder ob nicht Formeln reichen.
Gruß
Reinhard
lies noch mal, was Tino...
02.03.2012 14:48:54
zu
..geschrieben hat:
kommt als Code in Tabelle= Worksheet!
nicht in ein Modul !
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) usw...
Gruß
robert
verstanden wie Deine Datei aufgebaut ist
02.03.2012 22:56:32
Tino
Hallo,
dann versuche es mit diesem Code.
kommt als Code in die Tabelle "Auswertung"
Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim ArrayDaten(), n&, nZaehler&, nLetzte& 
Dim rngVorgabe As Range 
Set rngVorgabe = Range("N53") 'wo die Zahl steht 
 
If Intersect(rngVorgabe, Target) Is Nothing Then Exit Sub 'andere Zelle 
If Not IsNumeric(rngVorgabe.Value) Then Exit Sub 'keine Zahl 
 
 With Sheets("data") 
      nLetzte = .Cells(.Rows.Count, 22).End(xlUp).Row 
      If nLetzte > 1 Then 'keine Daten, nLetzte = 1 
          ArrayDaten = .Range("V2", .Cells(nLetzte, 22)).Resize(, 2).Value2 
          Redim Preserve ArrayDaten(1 To Ubound(ArrayDaten), 1 To 1) 
          nZaehler = rngVorgabe.Value + 1 
          For n = 1 To Ubound(ArrayDaten) 
             nZaehler = nZaehler - 1 
             ArrayDaten(n, 1) = nZaehler 
             If nZaehler < 2 Then nZaehler = rngVorgabe.Value + 1 
          Next n 
       
      End If 
      Application.EnableEvents = False 
          .Range("K2", .Cells(.Rows.Count, 11)).ClearContents 
          If nLetzte > 1 Then 
            .Range("K2").Resize(Ubound(ArrayDaten)) = ArrayDaten 
          End If 
      Application.EnableEvents = True 
 End With 
End Sub 
 
 
Gruß Tino
Anzeige
AW: Runterzählen innerhalb einer Spalte
02.03.2012 15:09:59
teest
Also, um es nochmals klarer darzustellen:
Als erstes lasse ich per Textfenster abfragen wieviele "Bahnen" ein Produkt hat, wir nehmen nun mal an es sind 600.
Danach soll in dem Sheet, in welchem alle Daten stehen (ca 15 Spalten/60'000 Zeilen)
in der Spalte "V" von 600 bis auf 1 runtergezählt werden, danach soll es wieder bei 600 anfangen.
Da das ganze File nur eine Vorlage ist und es auch mal mehr oder weniger Daten sein können muss dass ganze ziemlich flexibel sein.
(Die Daten werden ebenfalls importiert)
Dies ist erforderlich weil der Sensor der die Daten ausgibt diese einfach aneinanderhängt, sprich nach der 600. Bahn fängt er wieder bei der 1. an.
Mein Makro (von mir aus muss es nicht umbedingt eines sein) soll nun diese Eingabe "600" aus ihrer Zelle lesen und dann (in einem anderem Sheet) diese runterzählen.
Ich hoffe dass ist nun verständlich genug.
+ ja den code hatte ich nicht in einem Modul sondern in einem Sheet
Anzeige
noch einmal...
02.03.2012 16:49:35
zu
ja den code hatte ich nicht in einem Modul sondern in einem Sheet
ohne auf die Problematik weiter einzugehen-
lies doch wie Tinos Code beginnt-ist ein Worksheet-Event und keine Sub(...)
also probier den Code, so wie es Tino geschrieben hat.
Rechte Maustaste auf den Tabellenblatt-Reiter-Code anzeigen-
und Code dort einfügen.
Hab den Code aber nicht getestet und kann daher nicht beurteilen, ob er Dir hilft.
Gruß
robert
noch einmal...
02.03.2012 16:50:38
robert
ja den code hatte ich nicht in einem Modul sondern in einem Sheet
ohne auf die Problematik weiter einzugehen-
lies doch wie Tinos Code beginnt-ist ein Worksheet-Event und keine Sub(...)
also probier den Code, so wie es Tino geschrieben hat.
Rechte Maustaste auf den Tabellenblatt-Reiter-Code anzeigen-
und Code dort einfügen.
Hab den Code aber nicht getestet und kann daher nicht beurteilen, ob er Dir hilft.
Gruß
robert
Anzeige

337 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige