Wertepaare mit vorhandenen Übereinstimmungen
#1
Hallo zusammen,

ich hab absolut keine Ahnung wie ich es am besten erklären soll. Weiß noch nicht einmal wo nach ich suchen könnte.  

Basis:
[img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

Die tatsächliche Liste umfasst ca. 5000 Werte in jeder Spalte. Es handelt sich hierbei um Stücklisten. Spalte A = Produkt, Spalte B = Einsatzstoff.

Nun möchte ich jeden Wert aus Spalte A gegenüberstellen und die Anzahl der Übereinstimmungen aus B ausgeben. Sprich:

Werte (aus Spalte A) 100 und 101 haben 4 gleiche Werte (in diesem Beispiel 04507, 04507, 05555, 08007).

Ergebnis:
[img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]


In Real würde es bedeuten: Produkt 100 und 101 haben 4 gleiche Einsatzstoffe,

Die tatsächliche Liste umfasst ca. 5000 Werte in jeder Spalte. 

Um einen Rat wäre ich euch sehr dankbar.

FG

CHarpor
Antworten Top
#2
Hi,

meinst du es in der Art?

Arbeitsblatt mit dem Namen 'Tabelle2'
ABCDE
1ABHSAB
2001550020014
3001450130014
400145020014
500145030014
6001450460021
7001450571014
8002450681014
900245071014
101015500101014
111014501111021
121015502
131015503
14101450414
15101450515
16102450616
171015507

ZelleFormel
C2=WENN(ZÄHLENWENN(B:B;B2)>1;ZEILE();"")
D2=WENNFEHLER(INDEX(A:A;KKLEINSTE(C:C;ZEILE(A1)));"")
E2=WENN(D2="";"";ZÄHLENWENN(D:D;D2))
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Farbig markierte Spalte (Hilfssp.) einfach ausblenden.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
Hallo CHarpor,

hier würde ich das folgende Makro als UDF (user defined function) nutzen. Es wird in ein allgemeines Modul kopiert und kann dann wie jede Excelfunktion in einer Formel genutzt werden. Siehe Anlage.

Code:
Public Function GleicheStoffe(rngListe As Range, varEins As Variant, varZwei As Variant) As Long
Dim lngZeile As Long
Dim lngAnz As Long
Dim varListe() As Variant
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
varListe = rngListe.Value
For lngZeile = 1 To UBound(varListe, 1)
    If varListe(lngZeile, 1) = varEins Then
        dict(varListe(lngZeile, 2)) = 1
    End If
Next lngZeile
lngAnz = 0
For lngZeile = 1 To UBound(varListe, 1)
    If varListe(lngZeile, 1) = varZwei Then
        If dict.exists(varListe(lngZeile, 2)) Then
            lngAnz = lngAnz + 1
        End If
    End If
Next lngZeile
GleicheStoffe = lngAnz
Set dict = Nothing
End Function

ps. Falls gleiche Kombinationen Produkt;Einsatzstoff mehrfach auftreten, müste eine Zeile ergänzt werden.


Angehängte Dateien
.xlsm   GleicheStoffe.xlsm (Größe: 14,79 KB / Downloads: 6)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#4
Werte (aus Spalte A) 001 und 101 haben 4 gleiche Werte (in diesem Beispiel 04507, 05000, 05555, 08007) in B.

Für diese - gleich doppelte - Korrektur Deines Beispiels musste ich mir nun 3 Minuten lang meine Augen verderben.

(Eingeschränkte) Formellösung.

.xlsx   180501 Anzahl gleicher Inhalte bei je 2 Produkten aus n Produkten.xlsx (Größe: 9,74 KB / Downloads: 4)
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#5
Uneingeschränkte Formellösung:

.xlsx   180501 Anzahl gleicher Inhalte bei je 2 Produkten aus n Produkten - optimiert.xlsx (Größe: 10,15 KB / Downloads: 12)
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#6
Vielen Dank euch allen. Sind doch viele Lösungen. Trotz blöder Erklärung. Werde es morgen mal im "echt" testen.

FG
Antworten Top


Gehe zu:


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