Import CSV + Formatierung + Formeln, Wichtig!!!

Bild

Betrifft: Import CSV + Formatierung + Formeln, Wichtig!!!
von: Tommy
Geschrieben am: 04.05.2015 21:39:39

Hallo liebe Community,
ich komme einfach nicht mehr weiter und benötige eure Hilfe.
Ich möchte eine CSV-Datei über einen Button in eine excel Tabelle importieren + formatieren + formeln automatisch einfügen.
Habe auch schon angefangen ein Makro dafür zu schreiben, was aber bisher nicht perfekt funktioniert.
Folgend findet ihr den Link zu den zwei Dateien (CSV + Excel)
https://www.herber.de/bbs/user/97411.zip
Zu eurer Information:
beginn der Daten ist immer die Spalte C
in meiner Beispiel klickt man auf die Zelle C15 und dann History importieren
die Grün markierten Zellen in der Excel Datei sind Daten die aus der CSV-Datei importiert werden; diese müssen nur noch richtig formatiert werden. Habe als Hilfe eine Beispielzeile drin. Die Zellen sollen gleichermaßen formatiert sein aber ohne die Farbe
in die rot markierkten Zellen sollen Formeln eingefügt werden. Die Formeln der Beispielzeile sollen übernommen und auf die zelle automatisch angepasst werden
weiße zelle: hier trage ich selber einen Wert ein, hier soll lediglich die Formatierung der Beispielzeile übernommen werden.
Ich wäre unendlich dankbar, wenn mir irgendjemand schnell helfen könnte. Ich komme einfach absolut nicht mehr weiter.
Viele Grüße aus Stuttgart
Tommy

Bild

Betrifft: AW: Import CSV + Formatierung + Formeln, Wichtig!!!
von: fcs
Geschrieben am: 05.05.2015 14:55:58
Hallo Tommy,
ich hab jetzt mal versucht dein Makro lauffähig zu machen.
Gruß
Franz

Sub Import_CSV()
  '
  'Import_CSV Makro
  
  Dim wks As Worksheet, ZelleEinfuegen As Range
  Dim Zeile1 As Long, ZeileL As Long, strFormel As String
  Set wks = ActiveSheet
  Dim strFilename As String
  
  strFilename = "C:\Users\Thomas\Desktop\Excel Forum\His.csv"
  With wks
    'Einfügezelle in Spalte C setzen
    Set ZelleEinfuegen = .Cells(.Rows.Count, 3).End(xlUp).Offset(1, 0)
    Zeile1 = ZelleEinfuegen.Row
'
    With .QueryTables.Add(Connection:="TEXT;" & strFilename, Destination:=ZelleEinfuegen)
        .Name = "His" & Format(Now, "YYYYMMDDhhmmss")
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = False
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(5, 2, 1, 2, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, _
            1, 1, 1, 1, 1, 1, 1, 1) '5 = JMT bei einigen Spalten für korrekte Datums-Konversion
        .TextFileDecimalSeparator = "."  'für deutsches Excel/Betriebssystem-Einstellung
        .TextFileThousandsSeparator = "," 'für deutsches Excel/Betriebssystem-Einstellung
        .Refresh BackgroundQuery:=False
    End With
    
    wks.QueryTables(1).Delete 'Querytable nach Import wieder löschen
    
    ZeileL = .Cells(.Rows.Count, 3).End(xlUp).Row
    If ZeileL >= Zeile1 Then
        'Zeilenformat aus Zeile 14 auf alle neuen Zeilen kopieren
        .Rows(14).Copy
        With .Range(.Rows(Zeile1), .Rows(ZeileL))
          .PasteSpecial Paste:=xlPasteFormats
        End With
        Application.CutCopyMode = Fale
        
        With .Range(.Cells(Zeile1, 11), .Cells(ZeileL, 11)) 'Spalte K
          strFormel = "=IF(OR(ISBLANK(RC[-1]),RC[-1]=""""),"""",WEEKNUM(RC[-1],2))"
          .FormulaR1C1 = strFormel
        End With
        With .Range(.Cells(Zeile1, 13), .Cells(ZeileL, 13)) 'Spalte M
          strFormel = "=IF(ISBLANK(RC[-3]),"""",RC[-3]-RC[-10])"
          .FormulaR1C1 = strFormel
        End With
        With .Range(.Cells(Zeile1, 18), .Cells(ZeileL, 18)) 'Spalte R
          strFormel = "=RC[-1]+RC[-3]+RC[-4]"
          .FormulaR1C1 = strFormel
        End With
        With .Range(.Cells(Zeile1, 19), .Cells(ZeileL, 19)) 'Spalte S
          strFormel = "=(RC[-1]+RC[-5])/RC[-3]"
          .FormulaR1C1 = strFormel
        End With
        With .Range(.Cells(Zeile1, 20), .Cells(ZeileL, 20)) 'Spalte T
          strFormel = "=ROUND(RC[-1],0)"
          .FormulaR1C1 = strFormel
        End With
        With .Range(.Cells(Zeile1, 21), .Cells(ZeileL, 21)) 'Spalte U
          strFormel = "=SUM(R13C[-2]:RC[-2])"
          .FormulaR1C1 = strFormel
        End With
        With .Range(.Cells(Zeile1, 22), .Cells(ZeileL, 22)) 'Spalte V
          strFormel = "=R8C3 + SUM(R13C[-4]:RC[-4])"
          .FormulaR1C1 = strFormel
        End With
    End If
  End With
End Sub


Bild

Betrifft: AW: Import CSV + Formatierung + Formeln, Wichtig!!!
von: Tommy
Geschrieben am: 05.05.2015 22:20:31
VIELEN DANK =)
es funktioniert fast alles perfekt =)
nur eine Kleinigkeit noch. Die Formel in Spalte V ist falsch.
wie heißt die Formel als Makro richtig, wenn meine Beispielzelle V14 dort stehen hat
=WENN(ISTZAHL(V13);V13+R14;$C$8+R14)
Kannst du mir das vllt anpassen =)?
Gruß Tommy

Bild

Betrifft: AW: Import CSV + Formatierung + Formeln, Wichtig!!!
von: Tommy
Geschrieben am: 05.05.2015 22:21:21
VIELEN DANK =)
es funktioniert fast alles perfekt =)
nur eine Kleinigkeit noch. Die Formel in Spalte V ist falsch.
wie heißt die Formel als Makro richtig, wenn meine Beispielzelle V14 dort stehen hat
=WENN(ISTZAHL(V13);V13+R14;$C$8+R14)
Kannst du mir das vllt anpassen =)?
Gruß Tommy

Bild

Betrifft: AW: Import CSV + Formatierung + Formeln, Wichtig!!!
von: fcs
Geschrieben am: 06.05.2015 07:23:49
Hallo Thommy,
hier die Codezeile für die angepasste Formel in Spalte V

        With .Range(.Cells(Zeile1, 22), .Cells(ZeileL, 22)) 'Spalte V
          strFormel = "=IF(ISNUMBER(R[-1]C),R[-1]C+RC[-4],R8C3+R14C18)"
          .FormulaR1C1 = strFormel
        End With
Gruß
Franz

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Import CSV + Formatierung + Formeln, Wichtig!!!"