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.

Performance-Problem mit Formel
#11
(10.02.2017, 17:40)lupo1 schrieb: Du kannst gern Dateien auch wieder löschen. Ich werde für diesen Wunsch allerdings immer belächelt...
Hi lupo1, es geht gar nicht um das Belächeln, sondern um Mehfach-uploads zum gleichen Thema. Das ist übrigens meine Meinung. Und muss nicht mit der Mehrheit übereinstimmen... ... Ohne Datei wäre es wohl hier schwierig zu helfen. Aber es müssen eben nicht drei Dateien sein..!!!
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#12
Hallo,

anbei die gekürzte Datei und 2 Formevorschläge:

-sverweis mit 2 Kriterien (in H2)
- index(vergleich()) mit Type WAHR, der einen sortierten Datendatz erfordert, aber dann zum schnellsten gehört, was xl zu bieten hat
 in I2
Es ist einfach, das zuerst in ein Array zu übergeben.

Teste inbesondere die Formel aus I2 an einem begrenzten Datensatz.

mfg


Angehängte Dateien
.xls   Flug Wetter.xls (Größe: 664 KB / Downloads: 4)
Antworten Top
#13
Jockel, ich bin da militant:

Alles über 20 kb zum Erklären im Forum ist überflüssig!
Antworten Top
#14
Hallo,

hier der erste Ansatz für das Makro (es fehlt noch die Übergabe der Werte aus Tab1)


Code:
Sub Fen()
i=2
lr = Cells(Rows.Count, "A").End(xlUp).Row
Such = Application.Transpose(Range("D2:D" & lr))
Ergn = Application.Transpose(Range("C2:C" & lr))
Z = WorksheetFunction.Match(Cells(i, "F") & " " & CDbl(Cells(1, "G")), Such)
Debug.Print Z, Ergn(Z)
End Sub


Der Bezug ist meine Datei von vorhin.

mfg
Antworten Top
#15
(10.02.2017, 18:08)Fennek schrieb: Hallo,

hier der erste Ansatz für das Makro (es fehlt noch die Übergabe der Werte aus Tab1)


Code:
Sub Fen()
i=2
lr = Cells(Rows.Count, "A").End(xlUp).Row
Such = Application.Transpose(Range("D2:D" & lr))
Ergn = Application.Transpose(Range("C2:C" & lr))
Z = WorksheetFunction.Match(Cells(i, "F") & " " & CDbl(Cells(1, "G")), Such)
Debug.Print Z, Ergn(Z)
End Sub


Der Bezug ist meine Datei von vorhin.

mfg

Hallo Fennek,

tausend Dank für deine Mühen bisher! Sieht so aus, als fänden wir noch einen Weg. Es tut mir leid, aber du müsstest bitte ein klein wenig weiter ausholen. Ganz grob formuliert, was muss ich nacheinander tun?

Vielen Dank und einen schönen Abend,
Chris
Antworten Top
#16
Hallo,

der Code ist auf deine Datei abgestimmt.

Meine Vermutung: Laufzeit ca. 1 Minute auf einem relativ neuen Rechner.


Code:
Sub Fen()
Anf = Timer
Dim Such() As String
Dim OriD() As String
Dim N1() As String
'Daten aus Tabelle 2

lr2 = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
ReDim Such(lr2)
SpA2 = Application.Transpose(Sheets(2).Range("A2:A" & lr2))
SpB2 = Application.Transpose(Sheets(2).Range("B2:B" & lr2))
For i = LBound(SpA2) To UBound(SpA2)
   Such(i) = SpA2(i) & " " & CDbl(SpB2(i))
Next i
Set SpA2 = Nothing
Set SpB2 = Nothing
'Such = Application.Transpose(Range("D2:D" & lr))
V2 = Application.Transpose(Sheets(2).Range("V2:V" & lr2))
Debug.Print "Tab 2", Timer - Anf
'
'Daten aus Tabelle 1
'
lr1 = Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row
ReDim OriD(lr1)
ReDim N1(lr1)
Ori = Application.Transpose(Sheets(1).Range("I2:I" & lr1))
Tim = Application.Transpose(Sheets(1).Range("M2:M" & lr1))
For i = LBound(Ori) To UBound(Ori)
   OriD(i) = Ori(i) & " " & CDbl(Tim(i))
Next i
Set Ori = Nothing
Set Tim = Nothing
For i = LBound(OriD) + 1 To UBound(OriD) - 1
Z = WorksheetFunction.Match(OriD(i), V2)
N1(i) = V2(Z)
Next i
Sheets(1).Range("N1").Resize(lr1) = Application.Transpose(N1)
Sheets(1).Range("N1") = "Formel"
Debug.Print Timer - Anf
End Sub


mfg
Antworten Top
#17
Code:
Sub M_snb()
   sn = Sheet1.Cells(1).CurrentRegion
   sp = Sheet2.Cells(1).CurrentRegion.Resize(, 3)
   
   st = Sheet2.Cells(1).CurrentRegion.Columns(1)
   st = Array(Application.Match("ATL", st, 0), Application.Match("RIC", st, 0), Application.Match("SLC", st, 0))

   For j = 2 To UBound(sn)
      y = InStr("ATLRICSLC", sn(j, 9)) \ 3
      
      For jj = st(y) + 1 To st(y + 1) - 1
         If sn(j, 13) < sp(jj, 2) Then Exit For
      Next
      sn(j, 14) = sp(jj - 1, 3)
   Next
   
   Sheet1.Cells(1).CurrentRegion = sn
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#18
Hallo,

der Ursprungsbeitrag ist hier:

http://www.clever-excel-forum.de/thread-...age-3.html

die Aggregat-Formel stammt von mir, und ich hatte gestern bereits eine Lösung mit zwei Hilfsspalten und Vergleich angedacht.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


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