WinFuture-Forum.de: Excel Makro - Formel Automatisch Ans Spaltenende Kopieren - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Office 2007
Seite 1 von 1

Excel Makro - Formel Automatisch Ans Spaltenende Kopieren


#1 Mitglied ist offline   stma 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 17. Februar 09
  • Reputation: 0

geschrieben 17. Februar 2009 - 11:05

Hi,
ich bräuchte dringend Hilfe.

Also wie aus meinem unten ersichtlichen Makro zu sehen ist wird zurzeit eine Formel von G1 bis G11 von H1 bis H11 und von I1 bis I11 kopiert.
Jetzt kommt mein Problem.

Es kommt öfter vor dass die input Datei weniger oder mehr Zeilen hat und dann macht er aber trotzdem die Formel immer bis 11 und nicht mehr oder weniger.
Er müsste selbst erkennen wie weit er die Formel runterkopieren muss damit in jeder zeile wo ein inhalt ist auch eine Formel ist und nicht immer bis 11.
Ich kann zwar selbst im Makro ändern das er zb bis 14 oder 16 geht aber da gibt es sicher eine automatisierte lösung.

Was müsste ich in meinem Makro ändern damit das auch so hinhaut?
Bin erst neu auf dem Excel Makro gebiet Wink

Danke für eure Hilfe schonmal im voraus.


Sub Makro2()
'
' Makro2 Makro
'
' Tastenkombination: Strg+h
'
Workbooks.Open Filename:="Z:\Kunden_Projekte\Heidinger\HETI601.xls"
Columns("E:F").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("E:F").Select
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("G1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]/RC[-5]"
Range("G1").Select
Selection.AutoFill Destination:=Range("G1:G11")
Range("G1:G11").Select
Range("H1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]/RC[-6]"
Range("H1").Select
Selection.AutoFill Destination:=Range("H1:H11")
Range("H1:H11").Select
Range("I1").Select
ActiveCell.FormulaR1C1 = "=RC[-5]"
Range("I2").Select
ActiveWindow.ScrollColumn = 2
Range("I1").Select
Selection.AutoFill Destination:=Range("I1:I11")
Range("I1:I11").Select
Range("F25").Select
ActiveWindow.ScrollColumn = 1
ChDir "I:\Dokumente und Einstellungen\stma\Desktop"
ActiveWorkbook.SaveAs Filename:= _
"I:\Dokumente und Einstellungen\stma\Desktop\Amicron Übergabe.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
Range("F9").Select
End Sub
0

Anzeige



#2 Mitglied ist offline   DPXone 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 06. Juli 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. Februar 2009 - 18:13

Hallo stma,

teste mal folgendes Makro, ob es das macht was du möchtest:

Option Explicit

Sub Makro2()
	   ' Tastenkombination: Strg+h

	   Dim LastRow As Integer
	   
	   LastRow = Range("E" & Rows.Count).End(xlUp).Row
	   
	   Workbooks.Open Filename:="Z:\Kunden_Projekte\Heidinger\HETI601.xls"
	   
	   With Columns("E:F")
			  .Replace What:=".", Replacement:=","
			  .HorizontalAlignment = xlRight
	   End With
	   
	   Range("G1:G" & LastRow).FormulaR1C1 = "=RC[-2]/RC[-5]"

	   Range("H1:H" & LastRow).FormulaR1C1 = "=RC[-2]/RC[-6]"

	   Range("I1:I" & LastRow).FormulaR1C1 = "=RC[-5]"

	   ActiveWorkbook.SaveAs Filename:= _
		 "I:\Dokumente und Einstellungen\stma\Desktop\Amicron Übergabe.xlsx"
	   ActiveWindow.Close
End Sub


Gruß
DPXone
0

#3 Mitglied ist offline   stma 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 17. Februar 09
  • Reputation: 0

geschrieben 18. Februar 2009 - 08:18

Danke haut hin.
Echt super. Genau das was ich wollte.

lg
0

#4 Mitglied ist offline   tobias86 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.690
  • Beigetreten: 14. August 06
  • Reputation: 6
  • Geschlecht:Männlich
  • Wohnort:localhost

geschrieben 18. Februar 2009 - 09:32

Hey,

noch eine Kurze Anregung, ich würde nicht die Datei direkt ansprechen, sondern vll eine Variable nehmen, da du dann den Pfad leicht ändern kannst.

Beitrag anzeigenZitat (stma: 17.02.2009, 11:05)

Workbooks.Open Filename:="Z:\Kunden_Projekte\Heidinger\HETI601.xls"

ActiveWorkbook.SaveAs Filename:= _
"I:\Dokumente und Einstellungen\stma\Desktop\Amicron Übergabe.xlsx", _


Desweiteren würde ich auch nicht den Desktop als Speicherort nehmen, da das nur bei dir funktioniert und bei sonst keinem ;) und auch würde ich in Erwägung ziehen, keine xlsx (Office 2007) zu nehmen, sondern vielleicht eine xls Datei (funktioniert unter jeder neueren Office Version)
0

#5 Mitglied ist offline   Lofote 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.526
  • Beigetreten: 24. August 04
  • Reputation: 1

geschrieben 18. Februar 2009 - 10:17

Wenn ers nur selbst verwendet, braucht ers nicht parametisieren.

Zum anderen sollte man nur noch dann XLS verwenden, wenn wirklich Personen mit uraltem Office (also vor 2000) damit arbeiten müssen, oder Excel 2000/2002/2003-User dabei sind, die das Kompatibiliätspack nicht installieren dürfen (Firmenrichtlinien).

Für XLSX spricht nämlich sehr viel, u.a. im Notfall wesentlich besser Daten retten zu können mit einem bloßen ZIP-Programm, aber auch Microsoft-unabhängig einfach viele Jahre später auf die Informationen noch zugreifen zu können (Stichpunkt: Datenarchivierung).

Da er es ja offensichtlich nur selbst verwendet, spricht exakt überhaupt nichts für XLS, im Gegenteil.
0

#6 Mitglied ist offline   stma 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 17. Februar 09
  • Reputation: 0

geschrieben 18. Februar 2009 - 12:09

Hi,
ja, dieses Makro wird nur auf einer Arbeitstation verwendet und der User möchte unbedingt auf dem Desktop gespeichert haben.

Office2007 ist kein problem. Das hat hier schon jeder drauf.

lg und danke für eure Hilfe
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0