Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
924to928
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
924to928
924to928
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

wer hilft bei logischer Verknüpfung

wer hilft bei logischer Verknüpfung
09.11.2007 21:16:20
scrofu
Hallo,
habe folgendes Problem und bitte um Hilfe.
Habe eine Spalte mit Zahlen 0120302010300 und möchte aus dieser Reihe die Zahl 2 suchen, sobald sie zweimal gefunden wurde, weitergehen bis nächste Zahl die größer oder gleich 2 ist und schauen ob dahinter eine Null ist oder ob zwei Nullen sind und suche neu beginnen. Ausgabe in eine weitere Spalte bei einer Null x bei zwei Nullen y.
Kann mir dies jemand in V-Basic programmieren?
Vielen Dank im voraus, falls sich jemand findet.
MfG scrofu

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Logik ?
09.11.2007 21:48:00
Ramses
Hallo
Da sind noch einige Unklarheiten
1. "..die Zahl 2 suchen, sobald sie zweimal gefunden wurde.."
Dürfen die beiden 2 auch aufeinanderfolgen
2. "..weitergehen bis nächste Zahl die größer oder gleich 2 .."
Ist das nun die dritte "2" oder kann das schon die zweite "2" aus Frage 1 sein
3. "...ob dahinter eine Null ist oder ob zwei Nullen ..."
Treten die "0" zusammen oder auch getrennt auf
Gruss Rainer

AW: Logik ?
09.11.2007 23:49:52
scrofu
Hallo Rainer, danke das Du mir helfen möchtest.
Da sind noch einige Unklarheiten
1. "..die Zahl 2 suchen, sobald sie zweimal gefunden wurde.."
Dürfen die beiden 2 auch aufeinanderfolgen
Nein, immer ist was dazwischen null oder eine andere Zahl, aufeinanderfolgen ist nicht der Fall
2. "..weitergehen bis nächste Zahl die größer oder gleich 2 .."
Ist das nun die dritte "2" oder kann das schon die zweite "2" aus Frage 1 sein
es ist die dritte zahl 2, kann 2 sein kann aber auch größer 2 sein, wird aber wie die zahl 2 behandelt
3. "...ob dahinter eine Null ist oder ob zwei Nullen ..."
Treten die "0" zusammen oder auch getrennt auf
treten einzeln 0 oder zusammen 00, dies wird dann mit x oder y gewertet
Gruss scrofu

Anzeige
AW: Logik ?
09.11.2007 23:50:28
scrofu
Hallo Rainer, danke das Du mir helfen möchtest.
Da sind noch einige Unklarheiten
1. "..die Zahl 2 suchen, sobald sie zweimal gefunden wurde.."
Dürfen die beiden 2 auch aufeinanderfolgen
Nein, immer ist was dazwischen null oder eine andere Zahl, aufeinanderfolgen ist nicht der Fall
2. "..weitergehen bis nächste Zahl die größer oder gleich 2 .."
Ist das nun die dritte "2" oder kann das schon die zweite "2" aus Frage 1 sein
es ist die dritte zahl 2, kann 2 sein kann aber auch größer 2 sein, wird aber wie die zahl 2 behandelt
3. "...ob dahinter eine Null ist oder ob zwei Nullen ..."
Treten die "0" zusammen oder auch getrennt auf
treten einzeln 0 oder zusammen 00, dies wird dann mit x oder y gewertet
Gruss scrofu

Anzeige
AW: Logik ?
10.11.2007 06:44:13
Ramses
Hallo
meinst du so
Tabelle3

 AB
1120302010300x
2120300010300 
3122300010300y
4120302010300x
5  

Formeln der Tabelle
ZelleFormel
B1=detectxy(A1)
B2=detectxy(A2)
B3=detectxy(A3)
B4=detectxy(A4)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Das ist der VBA-Code der dazu in ein Modul deiner Mappe kopiert werden muss
Function DetectXY(srcRng As Range) As String
    '(C) Ramses, 2007
    'Durchsucht eine Zahl nach dem zweimaligen Vorkommen der Zahl 2
    'Wenn zutreffend werden die darauffolgenden Zahlen geprüft
    'ob gleich oder grösser 2
    'Wenn zutreffend, werden die auf diese Zahl folgenden 2 Zahlen
    'auf "0" bzw., "00" geprüft
    '"0" gibt "x", "00" gibt "y" an die Funktion zurück
    '************
    'Die zu prüfende Zahl steht in A1
    'Aufruf der Zelle in A1 = "=Detectxy(A1)"
    '************
    Dim i As Long, n As Long, cnt2 As Integer
    If srcRng Like "*2*2*" Or srcRng Like "*22*" Or srcRng Like "22*" Then
        cnt2 = 0
        For i = 1 To Len(srcRng)
            If Mid(srcRng, i, 1) = 2 Then
                cnt2 = cnt2 + 1
            End If
            If cnt2 = 2 Then
                For n = i To Len(srcRng) - 1
                    If Mid(srcRng, n, 1) >= 2 And Mid(srcRng, n + 1, 1) = 0 Then
                        If Mid(srcRng, n + 2, 1) = 0 Then
                            DetectXY = "y"
                        Else
                            DetectXY = "x"
                        End If
                        Exit Function
                    End If
                Next n
            End If
        Next i
    End If
End Function

Gruss Rainer

Anzeige
Korrektur
10.11.2007 07:10:23
Ramses
Hallo
Sorry, hier noch eine Korrektur um ein paar Sonderfälle zu berücksichtigen
Tabelle3

 AB
1120302010300y
2120300010300 
3122300010300y
4120302010300y
5120001003200 
6120300010230x

Formeln der Tabelle
ZelleFormel
B1=detectxy(A1)
B2=detectxy(A2)
B3=detectxy(A3)
B4=detectxy(A4)
B5=detectxy(A5)
B6=detectxy(A6)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Und das ist der korrigierte Code dazu
Function DetectXY(srcRng As Range) As String
    '(C) Ramses, 2007
    'Durchsucht eine Zahl nach dem zweimaligen Vorkommen der Zahl 2
    'Wenn zutreffend werden die darauffolgenden Zahlen geprüft
    'ob gleich oder grösser 2
    'Wenn zutreffend, werden die auf diese Zahl folgenden 2 Zahlen
    'auf "0" bzw., "00" geprüft
    '"0" gibt "x", "00" gibt "y" an die Funktion zurück
    '************
    'Die zu prüfende Zahl steht in A1
    'Aufruf der Funktion in B1 = "=Detectxy(A1)"
    '************
    Dim i As Long, n As Long, cnt2 As Integer
    Dim startChk As Long
    If Left(srcRng, Len(srcRng) - 2) Like "*2*2*" Or _
        Left(srcRng, Len(srcRng) - 2) Like "*2*2" Or _
        Left(srcRng, Len(srcRng) - 2) Like "2*2" Or _
        Left(srcRng, Len(srcRng) - 2) Like "*22" _
        Or Left(srcRng, Len(srcRng) - 2) Like "22*" Then
        cnt2 = 0
        For i = 1 To Len(srcRng) - 2
            If Mid(srcRng, i, 1) = 2 Then
                cnt2 = cnt2 + 1
            End If
            If cnt2 = 2 Then
                For n = i + 1 To Len(srcRng) - 1
                    If Mid(srcRng, n, 1) >= 2 And Mid(srcRng, n + 1, 1) = 0 Then
                        If Mid(srcRng, n + 2, 1) = 0 Then
                            DetectXY = "y"
                        Else
                            DetectXY = "x"
                        End If
                        Exit Function
                    End If
                Next n
            End If
        Next i
    End If
    DetectXY = ""
End Function

Gruss Rainer

Anzeige
AW: Korrektur
10.11.2007 15:55:04
scrofu
Hallo Ramses,
erst mal vielen Dank für Deine Hilfe, Du bist schon sehr früh unterwegs, Hut ab,
Sieht sieht komplieziert aus dein Quellcode, hätte ich so nie hinbekommen.
Habe versucht das ganze zum laufen zu bringen, es scheiter aber an meine magelndem VB Verständniss.
Sub kann keine Funktion ausführen , bin noch am suchen wie ich eine Funtionen direkt ausfüren kann.
Falls du eine schnelle Lösung, nur her damit.
Auf jeden Fall Klasse das Ganze
Gruss scrofu

AW: Korrektur
10.11.2007 17:04:00
scrofu
Hallo Ramses,
habe gerade entdeckt die Funktion kann direkt aufgerugfen werden.
Habe nur ein Problem, die Zahlen stehen senkrecht in Spalte A untereinenader.
A1=1
A2=2
A3=0
usw.
Wäre es möglich das ganze aus senkrechte Spalten umzuschreiben?
Die Logik von Dir stimmt.
Danke scrofu

Anzeige
Sorry,...
10.11.2007 20:02:40
Ramses
Hallo
...dein Frage habe ich beantwortet und der Code funktioniert.
Ich habe keine Lust das ganze nun nochmals zu machen unter völlig anderen Voraussetzungen.
Gruss Rainer

AW: wer hilft bei logischer Verknüpfung
10.11.2007 01:17:05
Erich
Hallo scrofu (?, böse Eltern?),
nicht schön, reicht aber vielleicht schon aus: Sub SuchSpez() Dim zz As Long zz = 1 WW: While Cells(zz, 1) 2 And Not IsEmpty(Cells(zz, 1)) zz = zz + 1 Wend zz = zz + 2 While Cells(zz, 1) 2 And Not IsEmpty(Cells(zz, 1)) zz = zz + 1 Wend zz = zz + 1 While Cells(zz, 1) Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: wer hilft bei logischer Verknüpfung
10.11.2007 16:02:52
scrofu
Hallo Erich,
auch Dir danke ich für Deine Bemühungen.
Habe es ausgeführt aber es kommen keine Ergebnisse. Spalte bleibt leer.
Vieleicht liegt es an meiner Zahlenspalte, habe nicht erwähnt das auch leere Zellen vorkommen, ist das ein Problem?
Gruss Scrofu

Anzeige
AW: wer hilft bei logischer Verknüpfung
10.11.2007 17:24:00
scrofu
Hallo Erich,
wenn keine leeren Zellen sind funtioniert es.
Kannst Du es noch so abändern , daß nach der dritten 2, die zwei nächste Zahlen geprüft werden sollen ob 2 nullen dann x oder eine null und eine zahl größer 2 dann y. Es wäre äusserst nett von Dir wenn Du dies auch noch machen könntest.
Danke
Gruss Scrofu

AW: wer hilft bei logischer Verknüpfung
10.11.2007 20:04:58
scrofu
Kurze Rüchmeldung
Ramses und Erich,
Problem gelöst, dank Eurer Hilfe (Ideen ) hab ich solange probiert bis es klappt.
Tausend Dank
Scrofu

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige