Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Visual Basic Code - und ich 2 Welten
#1
Hallo,
ich versuche folgendes hinzubekommen. Habe es in Visual Basic versucht. Vielleicht lässt es sich die Fragestellung auch einfacher lösen.

Zahlenreihe 1:
A1:A20 stehen 20 Zahlen

Zahlenreihe 2:
Z1:AS20 stehen 20 Zahlen

Ich möchte jetzt das die Werte aus Zahlenreihe 2 (Z1:AS20) mit Zahlenreihe 1 (A1:A20) abgeglichen werden und mit den Doppelten und den Nebenzahlen die sich aus Z1:AS20 in A1:A20 ergeben gelistet werden.
Ab AV1 die Werte aus Zahlenreihe 1  und ab BR 1 die Werte aus Zahlenreihe 2.

Habe mal versucht den Code dafür zu erstellen. Funktioniert aber leider nicht!!

Code:
Sub FilterAndSort()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Blatt1")

    Dim rngSource1 As Range, rngSource2 As Range
    Set rngSource1 = ws.Range("A1:A20") ' Bereich der ersten Zahlenreihe
    Set rngSource2 = ws.Range("Z1:AS20") ' Bereich der zweiten Zahlenreihe

    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")

    Dim cell As Range
    For Each cell In rngSource2
        If dict.Exists(cell.Value) Then
            dict(cell.Value) = dict(cell.Value) + 1
        Else
            dict.Add cell.Value, 1
        End If
    Next cell

    Dim resultArr() As Variant
    ReDim resultArr(1 To dict.Count, 1 To 1)

    Dim key As Variant, i As Long
    i = 1
    For Each key In dict.Keys
        resultArr(i, 1) = key
        i = i + 1
    Next key

    ws.Range("AV1").Resize(dict.Count, 1).Value = resultArr

    ' Sortieren
    ws.Range("AV1").Sort Key1:=ws.Range("AV1"), Order1:=xlAscending, Header:=xlNo

    ' Clear Dictionary for the second set of numbers
    Set dict = CreateObject("Scripting.Dictionary")

    For Each cell In rngSource1
        If dict.Exists(cell.Value) Then
            dict(cell.Value) = dict(cell.Value) + 1
        Else
            dict.Add cell.Value, 1
        End If
    Next cell

    ReDim resultArr(1 To dict.Count, 1 To 1)
    i = 1
    For Each key In dict.Keys
        resultArr(i, 1) = key
        i = i + 1
    Next key

    ws.Range("BR1").Resize(dict.Count, 1).Value = resultArr

    ' Sortieren
    ws.Range("BR1").Sort Key1:=ws.Range("BR1"), Order1:=xlAscending, Header:=xlNo

End Sub

Beispiel:
Zahlenreihe 1
A1:A20
4,6,7,9,14,18,28,32,36,39,40,41,50,52,54,55,57,59,61,66

Zahlenreihe 2
Z1:AS20
3,6,9,13,16,20,23,27,30,34,37,41,44,48,51,55,58,62,65,68

Ergebnis:
ab AV1:
4,6,7,9,14,28,36,40,41,50,52,54,55,57,59,61,66

ab BR1:
3,6,9,13,27,37,41,51,55,58,62,65

Was mache ich denn falsch? Habe wohl den Überblick verloren  22 22

Gruss flicflac
Antworten Top
#2
Hallo,

auch hier: eine Beispieldatei hilft beim Helfen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Zusätzlich:
Zitat:Zahlenreihe 2:
Z1:AS20 stehen 20 Zahlen

Der Bereich Z1:AS20 umfasst 400 Zellen!
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Hallo,

beziehen sich die Ergebnisse auf das, was das Makro liefert, oder sind das die Wunschergebnisse?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
Hier die Beispieldatei

Danke


Angehängte Dateien
.xlsx   Beispiel Datei.xlsx (Größe: 1,5 MB / Downloads: 3)
Antworten Top
#6
Ich habe mal das Monster von 1,5 MB auf 12,9 KB geschrumpft, ohne den Inhalt zu verändern …


Angehängte Dateien
.xlsx   Beispiel Datei.xlsx (Größe: 12,92 KB / Downloads: 6)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
Hi,

Zitat:A1:A20 stehen 20 Zahlen

In der Tabelle stehen Zahlen von A1 bis T7, macht 20 in der Horizontalen und 7 vertikal, insgesamt 140, aber keine in A8 bis A20!

Zitat:Z1:AS20 stehen 20 Zahlen
 wie oben!

Zitat:und den Nebenzahlen

Was sind Nebenzahlen?
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#8
Nebenzahlen = Nachbarzahlen
3 dann sind 2 und 4 die Nebenzahlen oder Nachbarzahlen

Es geht dabei immer nur um die horizontale Reihe.
Jede Zeile ist separat zu betrachten.

Z1:AS20 stehen 20 Zahlen
Ist ein Tippfehler von mir muss heißen:
Z1:AS1
Antworten Top
#9
Da ich offensichtlich zu blöd bin, Deine Aufgabenstellung auch nur annähernd zu verstehen, bin ich hier raus.
Dennoch viel Erfolg wünschend
grüßt Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#10
(12.08.2023, 10:00)flicflac schrieb: Ich möchte jetzt das die Werte aus Zahlenreihe 2 (Z1:AS20) mit Zahlenreihe 1 (A1:A20) abgeglichen werden und mit den Doppelten und den Nebenzahlen die sich aus Z1:AS20 in A1:A20 ergeben gelistet werden.

Wer mag nicht ein schönes Rätsel am Morgen, aber wie kommt man auf die Idee, dass das einer versteht?

Das muss wohl heißen:

Ich möchte jetzt jeden Wert beider Zahlenreihen jeweils mit allen Werten (inkl. +-1 umgebende Werte) der anderen Zahlenreihe vergleichen und bei einer Übereinstimmung diesen ausgeben.

z.B. die 4 aus der ersten Reihe ist in der zwieten Reihe enthalten, denn 3 + 1 = 4. Die 6 ist enthalten, denn sie ist direkt doppelt. Die 18 aus der ersten Reihe ist nicht enthalten, denn in der zweiten Reihe gibt es nur eine 16 und eine 20.


So, das ist das einzige was hier Sinn ergibt und wenn das nicht stimmt...dann weiß ich auch nicht mehr weiter Smile
[-] Folgende(r) 1 Nutzer sagt Danke an Janush für diesen Beitrag:
  • flicflac
Antworten Top


Gehe zu:


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