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

längste und kürzeste Serie von Zahlenreihen

längste und kürzeste Serie von Zahlenreihen
12.09.2008 12:06:05
Zahlenreihen
Hallo,
ich habe eine Excel-Tabelle mit folgender Spalte:
1
2
3
4
5
6
7
8
9
2
2
8
6
7
3
2
1
5
6
7
8
9
1
Jetzt möchte ich wissen, wie lang zb die längste Serie mit 1,2 und 3 ist und wie lang die längste Serie mit Werten größer als 3. Das ganze für die jeweils kürzeste Serie ware auch sehr hilfreich.
Hab da verschiedenes probiert, aber finde keinen richtigen Ansatz. Vielleicht geht das auch nur über VBA, aber da habe ich so gut wie gar keine Ahnung von...

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: längste und kürzeste Serie von Zahlenreihen
12.09.2008 12:38:37
Zahlenreihen
Hallo Rainer,
also erstmal danke für den schnellen tipp. Bekomm das aber irgendwie nicht für 1,2 und 3 hin. Also er soll ja nicht nur die Serie von einer der Zahlen, sondern die Serie in der irgend eine dieser drei Zahlen vorkommt ermitteln: zb aus 1 2 3 4 5 6 1 2 4 5 6 7 möchte ich für 1,2,3 das Ergebnis 3 und für die Zahlen über 3 das Ergebnis 4 erhalten.
in der Formel:
{=MAX(KGRÖSSTE((A2:A10004)*(A1:A999=4)*ZEILE(1:999);ZEILE(1:999))-KGRÖSSTE((A2:A1000=4) *(A1:A9994)*ZEILE(1:999);ZEILE(1:999))) }

4

mit


>3

ersetzen hat nich geklappt...

Anzeige
Zahlenreihe. Noch offen...
12.09.2008 13:01:28
Ramses
Hallo
Sorry,... da habe ich überhaupt keinen Ansatz wie man das prüfen könnte.
Gruss Rainer
AW: längste und kürzeste Serie von Zahlenreihen
12.09.2008 15:36:00
Zahlenreihen
Hallo Tim,
eine Formel für dein Anliegen kann ich mir schwer vorstellen.
Per VBA habe ich es so hinbekommen:

Sub prüfen()
Dim dreidown_n(100), dreiUp_n(100) As Integer
Dim zdreidown_n(100), zdreiUp_n(100), line  As Long
line = Range("A65536").End(xlUp).Row
With Range(Cells(1, 1), Cells(line, 1))
.Font.Bold = False
.Font.ColorIndex = 1
.Interior.ColorIndex = 0
End With
For i = 1 To line
If Cells(i, 1)  3 Then n = n + 1
Next
For i = 1 To Range("A65536").End(xlUp).Row
If Cells(i, 1) > 3 Then
dreiUp_n(m) = dreiUp_n(m) + 1
zdreiUp_n(m) = i
End If
If Cells(i + 1, 1) 


Fehlerroutine, ob die Zahlen alle "gültig" sind, habe ich jetzt nicht eingebaut.
Rückmeldung ob's hilft wäre nett.
Gruß
David

Anzeige
AW: längste und kürzeste Serie von Zahlenreihen
14.09.2008 01:07:36
Zahlenreihen
Hallo David,
hat leider nicht geklappt, glaube es liegt daran, das dein sub von Spalte A ausgeht. Die zu prüfende Spalte ist aber B. Weis leider nich wie ich das ändern kann. Kannst du vielleicht kurz beschreiben, was du da genau eingegeben hast, also was die einzelnen Schritte heißen, bzw ausführen sollen.
Grüße
Tim
AW: längste und kürzeste Serie von Zahlenreihen
14.09.2008 01:24:40
Zahlenreihen
achso, und es gibt in B1 auch noch eine Überschrift.
AW: längste und kürzeste Serie von Zahlenreihen
14.09.2008 01:24:00
Zahlenreihen
achso, und es gibt in B1 auch noch eine Überschrift.
AW: längste und kürzeste Serie von Zahlenreihen
14.09.2008 01:25:33
Zahlenreihen
achso, und es gibt in B1 auch noch eine Überschrift.
AW: längste und kürzeste Serie von Zahlenreihen
14.09.2008 07:52:00
Zahlenreihen
Hallo Tim,
mit diesem Code gehen wohl auch drei Überschriften ;-))
Probier mal

Option Explicit
Sub Pruef34()
Dim vA, ii As Long, jj As Long, aMax(1, 1) As Long, intG As Integer
Const lngUeb As Long = 1   ' Anz Zeilen Überschrift
Const lngSpa As Long = 2   ' Spaltennummer
vA = Application.Transpose(Range(Cells(1, lngSpa), _
Cells(Cells(Rows.Count, lngSpa).End(xlUp).Row, lngSpa)))
For ii = 1 + lngUeb To UBound(vA)
For jj = 1 To UBound(vA) - ii
If (vA(ii + jj)  aMax(1, intG) Then _
aMax(1, intG) = jj + 1: aMax(0, intG) = ii
Else
Exit For
End If
Next jj
Next ii
Cells(1 + lngUeb, lngSpa + 1).Resize(2, 2) = Application.Transpose(aMax)
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: längste und kürzeste Serie von Zahlenreihen
15.09.2008 08:38:36
Zahlenreihen
@Erich:
Du bist echt gemein! ;-)
Ich habe lange getüftelt, um meinen Code funktionierend zu bekommen und dann kommst du mit sowas.
Würdest du wenigstens noch so nett sein, mir einen Teil deines Makros zu erklären, damit ich es verstehen und vielleicht für die Zukunft lernen kann: Ich finde in der VBA-Hilfe keine Dokumentation zu "Transpose"?!
Ich kann nicht nachvollziehen, was die Zeile

vA = Application.Transpose(Range(Cells(1, lngSpa), _
Cells(Cells(Rows.Count, lngSpa).End(xlUp).Row, lngSpa)))


eigentlich macht.
Danke schon mal.
Gruß
David

Anzeige
@David
15.09.2008 09:25:00
Erich
Hallo David,
Transpose ist nur die engl. Übersetzung der Excelfunktion MTRANS.
In VBA ist die Fkt. nicht bekannt, deshalb steht "Application." davor - also Excel.
Notwendig ist Transpose hier nicht, aber praktisch.
In das Variant-Array vA soll ein Teil einer Spalte eingelesen werden.
Ohne Transpose wird vA ein zweidimensionales Array,
mit Transpose entsteht ein eindimensionales Array mit einer "Zeile",
beim Zugriff wird dann nur ein Index gebraucht.
Am besten probierst du das mal aus. Schreibe irgend etwas in A2:A4
und lass das mal laufen:

Sub Makro1()
Dim vA, vB
vA = Range(Cells(2, 1), Cells(4, 1))
vB = Application.Transpose(Range(Cells(2, 1), Cells(4, 1)))
MsgBox vA(2, 1)
MsgBox vB(2)
End Sub

Beide MsgBoxen zeigen den Wert von A3 an.
Du kannst dir vA und vB auch in der Überwachung ansehen (rechte Maustaste auf vA, Überwachung hinzufügen).
Die zweite Verwendung von Transpose in der Zeile
Cells(1 + lngUeb, lngSpa + 1).Resize(2, 2) = Application.Transpose(aMax)
sollte das Ergebnis in der Tab. nur anders herum ausgeben. Auch das geht ohne Transpose.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.: Ich hab dich nicht irgendwie "auf dem Kieker" - warum auch?
Dass wir uns in den Threads "getroffen" haben, ist wirklich Zufall. :-))

Anzeige
AW: @David
15.09.2008 09:49:00
David
Hallo Erich,
Danke für die Erläuterungen. Nachdem ich zwischenzeitlich größtenteils die Matrix-Funktionen von Excel (als Formeln) verstehen und anwenden kann, habe ich mit den Arrays bei VBA noch so meine Probleme.
Mit deinen Erklärungen habe ich jetzt nochmal versucht, deinen Code nachzuvollziehen, komme dabei aber nicht so richtig mit. Irgendwie verstehe ich nicht vollständig, was du da innerhalb der Schleifen prüfst und vor allem, wie da das Richtige Ergebnis rauskommt für beide Fälle (3) mit den paar Zeilen Code. Da werde ich wohl noch einige Erfahrungen sammeln müssen.
Gruß
David
PS: bezüglich deines "PS'" - ist mir schon klar, deswegen ja auch der Smiley mit dem blinzelnden Auge.
Ich bin ja jetzt schon eine ganze Weile im Forum aktiv, anfangs mehr auf der fragenden Seite, mittlerweile auch oft als "Helfer", wobei man auch 'ne ganze Menge lernt. Und deine Beiträge sehe ich des Öfteren und kann mich erinnern, dass der Code meist recht "kurz" ist, aber trotzdem seine Arbeit tut, wovor ich großen Respekt habe. Es ist sicherlich der eine Aspekt, VBA gut zu kennen, aber oft ist es auch die Herangehensweise an ein Problem, vor dem ich diesen Respekt habe. Nun aber genug, sonst beschwert sich noch Tim, dass wir seinen Thread mißbrauchen. ;-)
Anzeige
AW: längste und kürzeste Serie von Zahlenreihen
15.09.2008 08:27:27
Zahlenreihen
Hallo Tim.
Ist das jetzt noch Thema oder hat das Posting von Erich dein Anliegen gelöst?
Gruß
David
AW: längste und kürzeste Serie von Zahlenreihen
16.09.2008 08:30:12
Zahlenreihen
hallo ihr beiden,
äh also nein ka, erhlich gesagt weis ich nicht so ganz wie ich das anwenden soll. Wenn ich in VBA ein Module dazu erstelle und starte macht er zwar was, aber es wird mir nicht angezeigt. Da ich eigentlich nun plan von VBA habe, mache ich bestimmt etwas falsch. Kann mir einer von euch viell mal in kurzform erklären wie ich da vorgehen muss. sprich einfach vba öffnen und ins modul kopieren, oder muss ich da noch irgendwo was ergänzen, bzw es ganz anders machen? und wo/wie kann ich letztendlich das ergebnis sehen?
mfg
tim
Anzeige
AW: längste und kürzeste Serie von Zahlenreihen
16.09.2008 08:57:00
Zahlenreihen
Hallo Tim,
hier meine Testdatei:
https://www.herber.de/bbs/user/55413.xls
Ich habe das Makro mit Kommentaren ergänzt, damit du siehst, an welchen Stellen du bei anderen Zeilen oder Spalten etwas ändern musst.
Das Makro musst du in ein Modul kopieren und kannst es anschließend über das Makro-Menü oder z. Bsp. wie bei mir über eine Schaltfläche starten.
Schaltflächen erhälst du auf mehrere Arten, z. bsp. über die Formular-Symbolleiste einfach eine Schaltfläche zeichnen und anschließend in dem aufpoppenden Dialog das entsprechende Makro zuweisen.
Ich habe es so gebaut, dass du erstens eine Dialogbox erhälst, welche dir die Fundstellen mitteilt und anschließend die entsprechenden Bereiche farbig markiert.
Da du nicht gesagt hast, was mit den Funden passieren soll, musste ich mir halt was ausdenken.
Man könnte die Werte auch irgendwo in eine Zelle schreiben (wie es z. Bsp. Ernst gemacht hat). Bei ihm sollten die Treffer neben der Liste angezeigt sein. Aber an seinem Makro kann und will ich nicht rumdoktern.
Gruß
David
Anzeige
AW: längste und kürzeste Serie von Zahlenreihen
16.09.2008 18:40:00
Zahlenreihen
Hallo David,
also zumindest scheint Sie das zu bewirken, was ich ich möchte. Ich versuch sie mir erstmal zu erschließen, sprich welcher Schritt da was macht. So ganz bekomm ich Sie allerdings nicht auf meine Tabelle, da merkert er spätestens bei With Range(Cells(zMaxUp - vMaxUp + 1, 1), Cells(zMaxUp, 1)) auch mit einer 2 für die Spalten1. Was er da will kann ich leider nicht erkennen. Ein Prob kann sein, das die Werte im mom erst von 2-50 stehen und unter der Tabelle noch andere Auswertungsfunktionen. Allerdings zeigt er beim begrenzen auf 50Zeilen in line = Range("A65536").End(xlUp).Row im Msg für die größte Serie von 1-3 alles richtig an, nur nicht für die größte Serie über 4.
In erichs modul seh ich leider noch weniger durch. Vorallem erscheinen ja 4 Lösungen, die auch nicht alle korrekt sind. Und ich müsste mir das glaube schon im Msg anzeigen lassen, weil ja in C-F auch andere Werte stehen.
Hoffe mal das war halbwegs verständlich. Ich für mich selbst grad in vba durch google-schulung mit Schleifen und WennAbfragen ein, viell kann ich ja aus deinem modul was zusammenbasteln.
Grüße
Tim
Anzeige
AW: längste und kürzeste Serie von Zahlenreihen
17.09.2008 08:15:00
Zahlenreihen
Es wäre äußerst hilfreich, einfach mal mit den gleichen Daten wie du arbeiten zu können, denn das, was ich mir selbst zusammenbastele, muss nicht unbedingt deinen Gegebenheiten entsprechen. Für mein Beispiel hat es jedenfalls funktioniert. Vielleicht solltest du einfach mal eine Datei hochladen.
Gruß
David

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige