Abstand unterschiedlicher Zahlen zählen
#1
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
Top
#2
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
Top
#3
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.
Top
#4
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
Top
#5
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.
Top
#6
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
Top
#7
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
Top
#8
Hallo,


Arbeitsblatt mit dem Namen 'Tabelle3'
 AB
1 6
2  
3  
4  
51 
6  
7  
8  
9  
10  
111 
12  
13  
14  
15  
16  
172 

ZelleFormel
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.
Top
#9
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
Top
#10
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.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste