Microsoft Excel

Herbers Excel/VBA-Archiv

Selection.AutoFill

Betrifft: Selection.AutoFill von: Alexander
Geschrieben am: 27.06.2015 13:08:07

Hallo,

kann mir mal wer bitte helfen, ich hab offensichtlich einen Syntaxfehler im Bereich der Autofillfunktion am Ende, kann mir bitte einer sagen, was da nicht stimmt? Danke!

Sub DateiOeffnen()
  Dim Filename As String
  Dim Pfad As String
  
  
  ChDrive ("C:\")
  ChDir ("C:\DVD\")

  Filename = Application.GetOpenFilename
  If Filename <> "Falsch" Then
    Filename = Dir(Filename)
    Pfad = CurDir
  
    Range("C2").Select
     ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],'" & Pfad & "\[" & Filename & "]Prg'!c12:c17,6,   _
_
_
FALSE)"

Application.CutCopyMode = False
lz = Cells(Rows.Count, 1).End(xlUp).Rows.Row
Selection.AutoFill Destination:=Range(.Cells(2, 3), .Cells(lz, 3)), Type:=xlFillDefault

    
  End If
End Sub

  

Betrifft: AW: Selection.AutoFill von: Sepp
Geschrieben am: 27.06.2015 13:43:27

Hallo Alexander,

ohne .Select, einfach zuweisen.

Sub DateiOeffnen()
  Dim Filename As String
  Dim Pfad As String
  Dim lz As Long
  
  ChDrive ("C:\")
  ChDir ("C:\DVD\")
  
  Filename = Application.GetOpenFilename
  
  If Filename <> "Falsch" Then
    Filename = Dir(Filename)
    Pfad = CurDir
    lz = Application.Max(2, Cells(Rows.Count, 1).End(xlUp).Row)
    Range("C2:C" & lz).Formula = "=VLOOKUP(A2,'" & Pfad & "\[" & Filename & "]Prg'!C12:C17,6,FALSE)"
  End If
  
End Sub



Gruß Sepp



  

Betrifft: AW: Selection.AutoFill von: Alexander
Geschrieben am: 27.06.2015 14:57:35

Hallo,

danke, funktioniert! Könntest mir auch noch schnell bei was anderem helfen?
Wenn ich bei dem sverweis " Prg'!l:q " nur die Spalten l und q angebe, funktioniert das zwar, aber er braucht dann für den sverweis ca 20 sekunden. Kann man das schneller machen? Was ich will ist quasi das gleiche wie wenn man in der Excel Funktion sverweis als Matrix "$l:$q" angibt.


  

Betrifft: AW: Selection.AutoFill von: Daniel
Geschrieben am: 27.06.2015 15:38:19

Hi

du hast hier folgende Möglichkeiten, das ganze zu beschleunigen:

1. Öffne die Datei, bevor du die Formeln einfügst.
wenn die Datei geöffnet im Speicher vorliegt, kann Excel viel schneller auf die Daten zugreifen und du brauchst den Pfad nicht angeben.
Wichtig ist, dass wenn du die Formeln beibehälst, dass du erst die Datei mit der Datenquelle schließt, damit Excel in den Formeln den Pfad ergänzen kann.

Sub DateiOeffnen()
  Dim Filename As String
  Dim Pfad As String
  Dim lz As Long
  
  ChDrive ("C:\")
  ChDir ("C:\DVD\")
  
  Filename = Application.GetOpenFilename
  
  If Filename <> "Falsch" Then
    Workbooks.Open Filename, ReadOnly:=True
    Filename = Dir(Filename)
    ThisWorkbook.Activate
    lz = Application.Max(2, Cells(Rows.Count, 1).End(xlUp).Row)
    Range("C2:C" & lz).Formula = "=VLOOKUP(A2,'[" & Filename & "]Prg'!C12:C17,6,FALSE)"
  End If
  
End Sub
die zweite Beschleunigungstufe bei sehr grossen Datenmengen in der Quelldatei wäre, dass du diese vorher nach der Suchspalte (L) sortierst und dann mit dem SVerweis mit 4. Parameter = Wahr zu arbeiten.
der ist dann nämlich um Welten schneller als sein "falscher" Bruder.


gruß Daniel


  

Betrifft: AW: Selection.AutoFill von: Alexander
Geschrieben am: 27.06.2015 14:59:25

Hallo,

danke, funktioniert! Könntest mir auch noch schnell bei was anderem helfen?
Wenn ich bei dem sverweis " Prg'!l:q " nur die Spalten l und q angebe, funktioniert das zwar, aber er braucht dann für den sverweis ca 20 sekunden. Kann man das schneller machen? Was ich will ist quasi das gleiche wie wenn man in der Excel Funktion sverweis als Matrix "$l:$q" angibt.