Microsoft Excel

Herbers Excel/VBA-Archiv

Anzahl identischer Zeichen zweicher Zellen

Betrifft: Anzahl identischer Zeichen zweicher Zellen von: Peter Möller
Geschrieben am: 06.08.2014 15:08:36

Hallo,
gibt es eine Möglichkeit zu bestimmen, wie viele aufeinanderfolgende Zeichen der Inhalte zweier Zellen identisch sind?

Beispiel
A1 = 1234
B1 = 001234

Ergebnis = "1234" ist identisch in beiden Zellen, also 4

Danke für die Hilfe!
PeMoe

  

Betrifft: noch nicht eindeutig ... von: neopa C (paneo)
Geschrieben am: 06.08.2014 15:18:11

Hallo Peter,

... kann in A1 auch z.B. 712348 und in B1 0012345 stehen und Du suchst trotzdem die 4 übereinstimmenden Ziffern? Sollen auch aufeinanderfolgende gleiche alphanumerische Zeichen gezählt werden? oder welche Bedingungen gelten sonst?

Gruß Werner
.. , - ...


  

Betrifft: AW: noch nicht eindeutig ... von: Peter Möller
Geschrieben am: 06.08.2014 15:20:45

Ja, es sollen beliebige identische Zeichenfolgen innerhalb der beiden Zellen gefunden und die Länge des identischen Teils gezählt werden.


  

Betrifft: nachgefragt ... von: neopa C (paneo)
Geschrieben am: 06.08.2014 15:53:30

Hallo Peter,

.... wieviele Zeichen sind denn je Zelle max. zu erwarten? Hast Du mehrere / viele derartige "Zählungen" vorzunehmen? Verrate mir bitte auch, für was eine derartige Zählung gebraucht wird.

Auf den ersten Blick wird hier wahrscheinlich eine VBA-Lösung / UDF sinnvoll sein. Dann wäre ich als Helfer erst einmal raus, weil mich nur Formellösungen reizen. Deshalb denke ich auch noch einmal über eine Formellösung (dann wahrscheinlich mit Hilfszellen) nach. Aber dazu brauch ich mehr Zeit als 10 Minuten.

Gruß Werner
.. , - ...


  

Betrifft: (m)eine MATRIX-Formel in einer Hilfsspalte ... von: neopa C (paneo)
Geschrieben am: 06.08.2014 17:07:08

Hallo Peter,

... da Du bisher noch geantwortet hast, hier meine bisherige Formellösungsvorschlag mit Hilfsspalte. Die Bereichsnamen sind nicht notwendig, sie dienen lediglich der einfacheren Formelkonstruktionsübersicht infolge der Strukturierung.

Die Zeichenlänge der zu vergleichenden Texte ist egal. 100% getestet ist die Formel noch nicht, da ich vermute, dass Du sowieso nach einer UDF Ausschau halten willst.

Die Formel H1 nach unten kopieren.

Tab1

 ABCDEFGH
14A12-4AxE_5b0a12-4Ax_6  6  2
2    Anzahl der identischen Folge-Zeichen    
3    12-4Ax  6
4       5
5       4
6       3
7       2
8        

Formeln der Tabelle
ZelleFormel
E1=MAX(H:H)
H1{=WENNFEHLER(SUMME(WENN(ISTZAHL(FIND); 0+(FIND=MODALWERT(WENN(ISTZAHL(FIND); FIND))))); "")}
E3=TEIL(A1;VERGLEICH(E1;H:H;); E1)
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Namen in Formeln
ZelleNameBezieht sich auf
H1FIND=FINDEN(TEIL('Tab1'!$A$1;ZEILE('Tab1'!C1);Zeichen);'Tab1'!$B$1)
H1Zeichen=ZEILE('Tab1'!$A$1:INDEX('Tab1'!$A:$A;LÄNGE('Tab1'!$A$1)))-ZEILE('Tab1'!C1)+1
Namen verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4

Gruß Werner
.. , - ...


  

Betrifft: AW: (m)eine MATRIX-Formel in einer Hilfsspalte ... von: Peter Möller
Geschrieben am: 07.08.2014 08:49:31

Hallo Werner,
das ist ja schon mal enorm! Ich habe Dein Werk zwar noch nicht nachvollziehen können, aber das Ergebnis sieht schon mal sehr gut aus.
Du hattest aber noch Fragen zum wie viel und warum, die ich gern noch beantworten möchte. Dabei ist mir ein weiteres, für die Findung einer möglichen Lösung bestimmt nicht unerhebliches, Detail eingefallen...
Hintergrund meines Problems ist der Abgleich von zwei Artikellisten, um genau zu sein der Abgleich von Artikelnummern. 100% identische Artikelnummern finde ich mit einem SVERWEIS. Im Rest der Artikel vermute ich jedoch weitere eigentlich identische Artikelpaare, die nur aufgrund anderer Schreibweisen der Artikelnummer nicht gefunden werden können. An diese Artikel möchte ich mich "herantasten", indem ich auf paare mit möglichst großer Übereinstimmung schaue.
Ich hoffe, dies erklärt Deine Fragen.

Gruß
PeMoe


  

Betrifft: das erklärt mein Frage, aber ... von: neopa C (paneo)
Geschrieben am: 07.08.2014 11:19:33

Hallo Peter,

... Dir wird dann diese Art Suche wenn überhaupt nur bedingt nutzen. Und mir stellt sich die neue Frage, wie überhaupt falsche Artikelnummer erfasst werden konnten, aber darauf brauch ich keine Antwort, denn dies kann ich mir auch selbst beantworten.

Dir aber viel Erfolg bzw. möglichst wenig Aufwand.

Gruß Werner
.. , - ...





  

Betrifft: AW: das erklärt mein Frage, aber ... von: Peter Möller
Geschrieben am: 07.08.2014 11:45:55

Ich habe auch den Eindruck, dass solch eine Formel-Lösung nicht zum Ziel führen wird. Vielleicht ist da draußen ja noch jemand, der mit VBA etwas machen kann...

PeMoe


  

Betrifft: ich stell den Thread wieder auf offen ... aber ... von: neopa C (paneo)
Geschrieben am: 07.08.2014 11:55:18

Hallo Peter,

... ich meine, mit einer normalen VBA-Lösung wirst Du auch nicht das von Dir gewünschte erreichen.

Es gibt dazu mW aber auch auf Basis Lösungsstrategien. Wenn ich mich richtig erinnere, hat der User namens "shift del" u.a. im Online Excel Forum auf ähnliche Anliegen auch schon mal entsprechende Links angegeben. Da es mich aber wenig interessierte, hab ich es mir auch nicht weiter gemerkt :-( Google doch mal etwas, vielleicht wirst Du ja fündig, bzw. hilft Dir jemand anderes weiter.

Gruß Werner
.. , - ...


  

Betrifft: AW: VBA-Lösung von: Daniel
Geschrieben am: 07.08.2014 13:41:56

Hi

wenn VBA zulässig ist, dann gehts recht einfach:

1. Folgenden Code in ein allgemeines Modul einfügen:

Function LängsteÜbereinstimmung(Text1 As String, Text2 As String)
Dim P As Long, L As Long
Dim max As Long

For P = 1 To Len(Text1)
    For L = 1 To Len(Text1) - P + 1
        If InStr(Text2, Mid$(Text1, P, L)) = 0 Then Exit For
    Next
    If L > max Then max = L - 1
Next
LängsteÜbereinstimmung = max

End Function
2. Es steht dir jetzt die Funktion LängsteÜbereinstimmung(Text1;Text2) zur verfügung, welche du in dieser Datei wie eine normale Excelfunktion verwenden kannst:
=LängsteÜbereinstimmung(A1;A2)
=LängsteÜbereinstimmung("1234";"0001234000")


Gruß Daniel


  

Betrifft: AW: VBA-Lösung von: Peter Möller
Geschrieben am: 07.08.2014 14:04:49

Hallo Daniel,
kannst Du Deine Lösung auch für die erweiterte Anforderung anpassen, dass nicht jeweils die benachbarten Zellen verglichen werden (A1;A2, B1;B2,...), sondern für A1 der Zellwert aus B:B herausgesucht wird der die längste "Übereinstimmung" hat usw. für alle Zellen in Spalte A.

Gruß
PeMoe


  

Betrifft: Da muss gar nichts angepasst wdn, ... von: Luc:-?
Geschrieben am: 07.08.2014 15:01:14

…Peter!
Du machst den Fehler, in VBA-Subroutinen-Kategorien zu denken, du musst aber in Xl-FktsKategorien denken, also ganz normal wie sonst auch!
Daniel hat dir eine BsplFml zur Anwendung seiner UDF genannt, die kannst du doch beliebig ändern, auch eine Fml als Fktsargument eintragen! Die einzige Einschränkung bei Letzterem wäre, dass dabei unbedingt ein einzelner Wert rauskommen muss, der kein Fehler sein darf. Das müsste diese Fml dann mit abfangen.
Gruß, Luc :-?

Besser informiert mit …


  

Betrifft: AW: Da muss gar nichts angepasst wdn, ... von: Peter Möller
Geschrieben am: 07.08.2014 15:33:06

Leider denke ich wohl weder in "VBA-Subroutinen-Kategorien", noch in "Xl-FktsKategorien", zumindest nicht bewusst. Was diese Begriffe angeht verstehe ich leider nur "Bahnhof"...


  

Betrifft: AW: VBA-Lösung von: Daniel
Geschrieben am: 07.08.2014 18:36:20

Kann ich schon, war aber nicht Bestandteil der Fragestellung.
Aus meiner Sicht ist die Frage beantwortet.
Gruß Daniel


  

Betrifft: AW: VBA-Lösung von: Daniel
Geschrieben am: 07.08.2014 19:29:13

Wie wäre es denn erstmal mit einem kleinen Dankeschön für die Beantwortung deiner Frage, bevor du hier neue Fragen stellst?

Du kannst das Problem doch mit meiner Formel lösen:

1. Ordne die Werte der Spalten A ab Zelle A2 nach unten an
2. Ordne die Werte der Spalten B ab Zelle B1 nach rechts an. (geht mit Kopieren - Inhalte Einfügen Transponieren)
3. In die Tabelle kommt in Zelle B2 folgende Formel, welche du nach unten und nach rechts soweit ziehst wie benötigt:
=LängsteÜbereinstimmung($A2;B$1)
4. In die erste freie Spalten am Tabellenende (bspw Spalten X) kommt die Formel (Zelle X2):
=Index(B$1:W$1;1;Vergleich(Max(B2:W2);B2:W2;0))

Gruß Daniel


  

Betrifft: Na, ob das hilft, ... von: Luc:-?
Geschrieben am: 08.08.2014 03:14:35

…Daniel,
PeMoe scheint von Fmln doch noch weniger Ahnung zu haben als vom Makro-Recorder… ;->
Morrn, Luc :-?


  

Betrifft: AW: Na, ob das hilft, ... von: Daniel
Geschrieben am: 08.08.2014 08:53:25

es sollte helfen.
Makrorecorder braucht er ja nicht,
was immer auch Fmln sein sollen, dass kommt in meinem Lösungsvorschlag nicht vor und die benötigten Formeln kann er sich direkt aus meinem Beitrag rauskopieren.
Gruß Daniel


  

Betrifft: AW: Na, ob das hilft, ... von: Peter Möller
Geschrieben am: 08.08.2014 10:25:58

Hallo zusammen,
die Lösung von Daniel hat mir, mit den letzten Informationen zu dessen Anwendung, letztlich sehr geholfen. Ich konnte damit mein Problem lösen!
An dieser Stelle noch einmal vielen Dank an alle, die dazu beigetragen haben.
Gruß PeMoe


 

Beiträge aus den Excel-Beispielen zum Thema "Anzahl identischer Zeichen zweicher Zellen"