Thema Datum  Von Nutzer Rating
Antwort
16.05.2014 15:23:36 Julia
NotSolved
16.05.2014 16:11:40 Gast58454
NotSolved
16.05.2014 19:16:43 Julia
NotSolved
16.05.2014 19:31:58 Gast33110
NotSolved
16.05.2014 19:39:38 Julia
NotSolved
16.05.2014 19:49:25 Gast49552
NotSolved
16.05.2014 19:50:34 Gast34054
NotSolved
16.05.2014 20:03:52 Julia
NotSolved
16.05.2014 20:37:55 Gast94385
NotSolved
16.05.2014 20:51:28 Julia
NotSolved
Rot Excel Formeln in Schleife in unterschiedlich lange Bereiche kopieren
16.05.2014 23:47:27 Gast29947
*****
Solved
17.05.2014 00:17:50 Julia
NotSolved
17.05.2014 02:36:03 Gast33180
NotSolved

Ansicht des Beitrags:
Von:
Gast29947
Datum:
16.05.2014 23:47:27
Views:
827
Rating: Antwort:
 Nein
Thema:
Excel Formeln in Schleife in unterschiedlich lange Bereiche kopieren
Option Explicit
Sub Copy()
 
Dim i, j, m As Integer
Dim rngBereich As Excel.Range
Dim lngLetzteZeile As Long
For i = 7 To 7
    j = 24
    Sheets("Fitting Bond Universe").Range("B24:K300").Value = ""
    Sheets("Fitting Bond Universe").Range("B21").Value = Sheets("Daten").Range("A" & i).Value
    For m = 2 To 569
        If Sheets("Daten").Cells(i, m).Value <> "" Then
            Sheets("Fitting Bond Universe").Cells(j, "B").Value = Sheets("Daten").Cells("3", m).Value
            Sheets("Fitting Bond Universe").Cells(j, "C").Value = Sheets("Daten").Cells("5", m).Value
            Sheets("Fitting Bond Universe").Cells(j, "F").Value = Sheets("Daten").Cells(i, m).Value
            j = j + 1
        End If
    Next m
    With ActiveSheet
        'letzte Zeile mit Daten in Spalte F finden
        lngLetzteZeile = .Cells(.Rows.Count, "F").End(xlUp).Row
        'Bereich referenzieren
        Set rngBereich = .Range(.Cells(23, "G"), .Cells(lngLetzteZeile, "K"))
    End With
    With rngBereich 
        'Inhalte der >erste Zeile< im Bereich (heißt NICHT das es Zeile 1 im Blatt sein muss!!)
        'auf die unter ihr liegenden übertragen (automatisches Ausfüllen)
        Call .Rows(1).AutoFill(Destination:=rngBereich)
    End With
Next i
End Sub

Bei der Bestimmungen von lngLetzteZeile befand sich noch ein Fehler (".Row" fehlte am Ende; ist im Code oben nun korrigiert).

rngBereich ist bereits der Datenbereich ab Zeile 23 bis hin zur letzten Zeile. Mit rngBereich.Rows(1) wird also die Zeile 23 referenziert (genauer gesagt der Bereich G23:K23), da diese in diesem Bereich nunmal die erste Zeile ist (die zweite Zeile wäre dann G24:K24 usw.).

Wenn jetzt die erste Zeile  (also Zeile 23) die Zeile mit den Spaltenüberschriften ist, die Formeln also eine Zeile tiefer stehen, dann müsste man den Teil des Codes wie folgt abändern.

  With rngBereich
    'Inhalte der >zweiten Zeile< im Bereich (heißt NICHT das es Zeile 2 im Blatt sein muss!!)
    'auf die unter ihr liegenden übertragen (automatisches Ausfüllen)
    Call .Rows(2).AutoFill(Destination:=.Worksheet.Range(.Rows(2), .Rows(.Rows.Count)))
  End With

 

PS: Rest des Codes hab ich mir nicht weiter angesehen.

 

Gruß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen