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, 2019
23.02.2016, 19:08
(Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2016, 19: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, 2019
24.02.2016, 06:08
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2016, 06: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, 2019
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, 2019
24.02.2016, 10:34
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2016, 10: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.
|