Anzeige
Archiv - Navigation
928to932
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
928to932
928to932
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hallo Beverly und ransi!

Hallo Beverly und ransi!
26.11.2007 20:32:00
Jenny
Leider komme ich an den (bisher) letzten Beitrag von Beverly um 19:49 nicht ran, daher dieser neue Thread.
Alle anderen Beiträge kann ich einsehen, nur diesen nicht (FireFox 2.0.0.9).
Wenn ich versuche, diesen Beitrag in einem neuen Tab zu öffnen, dann kommt "(Unbenannt)", wenn ich's im gleichen Tab versuche, dann tut sich gar nix.
Wenn ihr wisst, was ich falsch mache, dann schreibt es bitte.
Hoffentlich kann ich es mir in diesem Thread ansehen.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hallo Beverly und ransi!
26.11.2007 20:40:00
Beverly
Hi Jenny,
ich (FireFox 2.0.0.9) habe kein Problem. Ich hoffe, mit diesem Beitrag ist es besser. Hier der Inhalt des alten:
Transpose ändert doch nur die Darstellungsweise einer Matrix aus Spalten- in Zeilenordnung oder umgekehrt, hat jedoch nichts mit dem Übernehmen der Daten in das Array zu tun.
Bis später,
Karin

AW: Hallo Beverly und ransi!
26.11.2007 20:56:00
Jenny
Danke Beverly,
hier kann ich's auch lesen!!! (Keine Ahnung, was da los ist. Ich hatte aber in diesem Forum schon häufiger dieses Problem, auch bei Threads mit denen ich gar nix zu tun hatte.)
Die "Transpose"-Frage zielte darauf, daß es ja in Excel selbst zumindest diesen Trenner-Unterschied gibt; je nachdem ob es sich um Zeilen oder Spalten handelt ist's ja der Punkt oder das Semikolon.
Aber damit hat VBA offensichtlich kein Problem.

Anzeige
Nachfrage!
26.11.2007 22:18:53
Jenny
Hallo,
wie kann ich denn jetzt die Werte in ein weiteres Datenfeld einlesen?
arr1 = Range("A1:A1000")
arr2 = Range("B1:B1000")
On Error Resume Next
For i = LBound(arr1) To UBound(arr1)
Such = arr2(i)
Ziel = WorksheetFunction.Match(Such, arr1, 0)
If Ziel "" Then Ziel = WorksheetFunction.Match(Such, arr1) Else Ziel = ""
arr3(i) = Ziel
...
Die letzte Zeile funkioniert nicht.
Ich habe auch schon Set und .Add probiert; ohne Erfolg.
Danke an jede/n mit einer Lösung!

AW: Nachfrage!
27.11.2007 07:58:30
Beverly
Hi Jenny,
dein Code: in einer Schleife sollen alle Werte des 2. Arryas durchlaufen und nachgeschaut werden, ob der Wert im 1. Array vorhanden ist, indem dessen Position darin ermittelt wird. Wird er gefunden, dann soll die Position im 1. Array gesucht werden (die ist aber doch schon gefunden oder auch nicht wenn der Wert nicht enthalten ist), andernfalls soll sie geleert werden? Am Ende soll die Position in ein 3. Array eingelesen werden.
Mir ist nicht ganz klar, was du erreichen möchtest. Ich nehme an, du willst die Werte (bzw. deren Position), die in beiden Arrays vorkommen auslesen? Das könnte man mit diesem Code machen

Sub schnittmenge()
Dim Feld1
Dim Feld2
Dim Feld3()
Dim varSuche
Dim inZaehler2 As Integer
Dim inZaehler As Integer
Feld1 = Range("A1:A10")
Feld2 = Range("B1:B10")
For inZaehler2 = LBound(Feld2) To UBound(Feld2)
On Error Resume Next
varSuche = Application.WorksheetFunction.Match(Feld2(inZaehler2, 1), Feld1, 0)
On Error GoTo 0
If varSuche  "" Then
ReDim Preserve Feld3(1, inZaehler)
Feld3(1, inZaehler) = varSuche                ' Position
' Feld3(1, inZaehler) = Feld1(varSuche, 1)     ' Wert
inZaehler = inZaehler + 1
End If
varSuche = ""
Next inZaehler2
For inZaehler2 = 0 To inZaehler - 1
MsgBox Feld3(1, inZaehler2)
Next inZaehler2
End Sub


Bis später,
Karin

Anzeige
AW: Nachfrage!
28.11.2007 01:09:11
Jenny
Funzt prima, danke!
Allerdings ergibt sich folgendes Problem:
Mit dem Bereich XY1:XY5000 -> kein Problem
Mit dem Bereich XY1:XY6000 (oder größer) -> nix passiert
Ist die Anzahl der Elemente eines Arrays begrenzt, oder liegt das an meinem mickrigen Arbeitsspeicher (256 MB)?

AW: Nachfrage!
28.11.2007 05:53:32
Beverly
Hi Jenny,
ich habe es mit 10.000 Einträgen getestet - es dauert zwar 20 sec., aber es läuft ohne Probleme. Ich habe 1.5 GB RAM.
Bis später,
Karin

worksheetfunction.match() vs. Dictionary
28.11.2007 12:33:00
ransi
Hallo
Habe ich das jetzt richtig verstanden ?
Werte in Spalte A
Werte in Spalte B
Alle Werte in Spalte B sollen mit Spalte A verglichen werden.
Wenn Wert in Spalte A vorhanden dann in ein Array aufnehmen mit Angabe an welcher Position.
Wenn das so richtig ist teste mal folgendes:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit


Public Sub test()
Dim arr1
Dim arr2
Dim MyDic
Dim MyDicAusgabe
Dim L As Long
'Dim Start As Double
'Start = Timer
arr1 = Range("A1:A65535")
arr2 = Range("B1:B65535")
Set MyDic = CreateObject("Scripting.Dictionary")
Set MyDicAusgabe = CreateObject("Scripting.Dictionary")
On Error Resume Next
For L = 1 To UBound(arr1)
    MyDic.Add arr1(L, 1), L
Next
For L = 1 To UBound(arr2)
    If MyDic.exists(arr2(L, 1)) Then MyDicAusgabe.Add arr2(L, 1), MyDic(arr2(L, 1))
Next
On Error GoTo 0
Range("C1").Resize(MyDicAusgabe.Count) = WorksheetFunction.Transpose(MyDicAusgabe.keys)
Range("D1").Resize(MyDicAusgabe.Count) = WorksheetFunction.Transpose(MyDicAusgabe.items)
Set MyDic = Nothing
Set MyDicAusgabe = Nothing
'MsgBox Timer - Start
End Sub

ransi

Anzeige
AW: worksheetfunction.match() vs. Dictionary
29.11.2007 12:56:00
Jenny
Hallo ransi,
leider ist das nicht ganz das was ich suche.
Es geht mir quasi um eine Simulation der Formeln
=VERGLEICH(B1;A:A;0)
=VERGLEICH(B2;A:A;0)
usw.
in Spalte C
Geht das mit dem Dictionary auch?

AW: worksheetfunction.match() vs. Dictionary
29.11.2007 17:56:11
ransi
HAllo Jenny
Das geht auch.
Musst nur die Werte aus dem ersten Dictionary ins Arr3 schreiben.
Ausgabe ist in Spalte C.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit


Public Sub test()
Dim arr1
Dim arr2
Dim MyDic
Dim Arr3
Dim L As Long
arr1 = Range("A1:A65535")
arr2 = Range("B1:B65535")
Redim Arr3(1 To UBound(arr2))
Set MyDic = CreateObject("Scripting.Dictionary")
On Error Resume Next
For L = 1 To UBound(arr1)
    MyDic.Add arr1(L, 1), L
Next
For L = 1 To UBound(arr2)
    If MyDic.exists(arr2(L, 1)) Then Arr3(L) = MyDic(arr2(L, 1))
Next
On Error GoTo 0
Range("C1").Resize(UBound(Arr3)) = WorksheetFunction.Transpose(Arr3)
Set MyDic = Nothing
End Sub

ransi

Anzeige
Rakete!!!
29.11.2007 20:33:00
Jenny
WOW ransi,
das Ding ist ja schneller als das Licht!
Da könnte ich ja glatt meinen 386er wieder aus dem Keller holen ;-)
Ich danke dir ganz ganz herzlich

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige