Registriert seit: 23.02.2016
Version(en): 2013
Hallo Zusammen,
habe mich hier angemeldet, da ich mit meinem Problem nicht mehr weiterkomme. Bisher habe ich Excel nur gebraucht um Tabellenvorlagen zu erstellen , doch seit ca. 6-8 Wochen beschäftige ich mich intensiver mit damit. Und schon bin ich bei einem Problem angekommen, bei dem ich nicht mehr weiter weiß. Ich hoffe, ihr könnt mir helfen.
In der Spalte A habe ich die Zahlen 0, 1 und 2 in ungeordneter Reihenfolge! Jetzt würde mich gerne interessieren, in welchem Abstand die 2 von 1 ist.
Beispiel:
Spalte A: 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1, 2, 0
Abstände: _, _, _, _, _, _, _, 1, 2, 3, 4, _, _, _, _, 1, _, 4 ist der gesuchte Abstand! 1 ist der gesuchte Abstand!
Die Abstände von 2 nach 2, 1 nach 1, 2 nach 1 interessieren nicht!
Allgemeiner ausgedrückt: Gesucht wird der Abstand unterschiedlicher Zahlen!
Vielen Dank schon mal für euer Interesse an diesem Problem und vielen Dank!
Bernd der Betonbauer
Registriert seit: 06.12.2015
Version(en): 2016
Hi,
Ein Versuch:
Sub finde1() Lr = range("a1").end(xldown).row Do until i>lr i=i+1 If cells(i,"a") =1 then j=0 Flag = true End if If cells(i,"a") =2 then If j>0 then debug.print j j=0 Flag = false End if If flag then j=j+1 Loop End sub
Mfg
Registriert seit: 13.04.2014
Version(en): 365
23.02.2016, 20:08
(Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2016, 20:08 von BoskoBiati.)
Hallo, ungetestet: Code: =Vergleich(2;A:A;0)-verweis(9;1/(A1:Index(A:A;Vergleich(2;A:A;0))=1);Zeile(A1:Index(A:A;Vergleich(2;A:A;0)))
Mit VBA würde ich das anders anfangen: Code: Option Explicit
Sub Diff()
Dim loErste As Long Dim loZweite As Long Dim loDiff As Long Dim loCo As Long With Columns(1) loZweite = .Find(2).Row For loCo = loZweite To 1 Step -1 If .Cells(loCo, 1) = 1 Then loErste = loCo Exit For End If Next End With loDiff = loZweite - loErste MsgBox ("Ergebnis: " & loDiff)
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 06.12.2015
Version(en): 2016
Noch ein Versuch:
Sub wfind() Dim rng, c_1, c_2 as range Dim flag as boolean Flag = true Set rng = range("a1").currentregion.columns(1) With rng Set c_2 = .find(2, searchdirection:= xlnext) Do If flag then C2= c_2.row Flag = false End if Set c_1 = .find(1, after:=c_2, searchdirection:=xlprevious) If c1<> c_1.row then debug.print c_2.row - c_1.row C1= c_1.row Set c_2 = .find(2, c_2) Loop until c_2.row = c2 End with End sub
Registriert seit: 13.04.2014
Version(en): 365
24.02.2016, 07:08
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2016, 07:09 von BoskoBiati.)
Hallo, da reicht dann auch das: Code: Option Explicit
Sub Diff() Dim loErste As Long Dim loZweite As Long Dim loDiff As Long Dim loCo As Long loZweite = Columns(1).Find(2).Row loErste = Range("A1", Cells(loZweite, 1)).Find(1, searchdirection:=xlPrevious).Row loDiff = loZweite - loErste MsgBox ("Ergebnis: " & loDiff) End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
es geht immer noch etwas kürzer:
Sub finden2() Dim c2 as range Set c2= range("a1") With columns(1) Do MyEnd = c2.row Set c2 = .find(2, after:=c2) C1 = .find(1, after:=c2, searchdirection:=xlprevious).row If myEnd < c2.row then debug.print c2.row, c1, c2.row - c1 Loop while myEnd < c2.row End with Set c2= nothing En sub
Registriert seit: 23.02.2016
Version(en): 2013
Hallo Fennek, Hallo BoskoBiati, vielen Dank für eure schnelle Hilfe! Leider kann ich damit nichts anfangen, da ich keine Ahnung von VBA habe! Ich wüßte noch nicht einmal wo ich den Code hinschreiben soll! Der Code: Code: =Vergleich(2;A:A;0)-verweis(9;1/(A1:Index(A:A;Vergleich(2;A:A;0))=1);Zeile(A1:Index(A:A;Vergleich(2;A:A;0)))
funktioniert nicht. Vielleicht hilft es Euch das Problem besser zu verstehen, wenn ihr wißt, wie ich darauf gekommen bin. Die Berechnung eines Abstandes zweier gleicher Werte in einer Spalte (diese kann ja 1000 Zahlen lang sein) kann man z.B. mit =WENN(A5="";"";(WENN(UND($A5=2);0;S4+1))) ----> Zählung vo 2 nach 2 =WENN(S5=0;S4+1;"") ----> Abstand = Ergebnis bestimmen. Jetzt sollen aber die Werte unterschiedlich sein! Es soll der Abstand von 1 nach 2 ermittelt werden! Der Abstand von 2 nach 1 interessiert in diesem Falle nicht. Vielen Dank für eure Mühe!!! Bernd der Betonbauer
Registriert seit: 13.04.2014
Version(en): 365
Hallo, Arbeitsblatt mit dem Namen 'Tabelle3' | | A | B | 1 | | 6 | 2 | | | 3 | | | 4 | | | 5 | 1 | | 6 | | | 7 | | | 8 | | | 9 | | | 10 | | | 11 | 1 | | 12 | | | 13 | | | 14 | | | 15 | | | 16 | | | 17 | 2 | |
Zelle | Formel | B1 | =VERGLEICH(2;A:A;0)-VERWEIS(9;1/(A1:INDEX(A:A;VERGLEICH(2;A:A;0))=1);ZEILE(A1:INDEX(A:A;VERGLEICH(2;A:A;0)))) |
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg |
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 23.02.2016
Version(en): 2013
Hallo Edgar,
super schnelle Antwort, aber leider noch nicht das gewünschte Ergebnis. Trotzdem vielen Dank!
Bei Deiner Lösung ermittelst Du nur einen Abstand, wenn die 2 einmal kommt. Was ist aber ,wenn in der Spalte A 1000 Zahlen stehen und die 1 und die 2 mehrfach kommen diese Abstände würden ja auch interessieren.
Viele Grüße
Bernd der Betonbauer
Registriert seit: 13.04.2014
Version(en): 365
24.02.2016, 11:34
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2016, 11:34 von BoskoBiati.)
Hallo, hast Du das bisher ein einziges Mal erwähnt??? Zudem sind Deine Ausführung nicht ganz nachvollziehbar: Zitat:Die Abstände von 2 nach 2, 1 nach 1, 2 nach 1 interessieren nicht! das passt nicht ganz zu dem: Zitat:Allgemeiner ausgedrückt: Gesucht wird der Abstand unterschiedlicher Zahlen! 2 nach 1 würde da auch reinfallen! Sollen das immer die Abstände zwischen zwei benachbarten Zahlen sein? Offensichtlich ist das, was Du hier offerierst nur ein Teil dessen, was Du beabsichtigst, nämlich die Nachfolgeberechnung von einer Berechnung, die als Ergebnis diese Zahlenreihe hat. Vielleicht stellst Du mal das komplette Projekt vor, evtl. gibt es ja viel einfachere Lösungswege.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
|