Performance-Problem mit Formel
#11
(10.02.2017, 18: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
stolzes Mitglied im ----Excel-Verein
Freund einer excellenten Power Query-Abfrage
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)
Top
#13
Jockel, ich bin da militant:

Alles über 20 kb zum Erklären im Forum ist überflüssig!
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
Top
#15
(10.02.2017, 19: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
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
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
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.
Top


Gehe zu:


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