Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
540to544
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
540to544
540to544
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Auf Spaltennamen beziehen

Auf Spaltennamen beziehen
06.01.2005 11:56:42
Nadi
Hallöchen,
durch ein Makro soll die Differenz zwischen den Spalten "Gross weight" und "Net weight" berechnet werden (Ergebnis wird dann in Seperate Spalte geschrieben und Formel runter kopiert).
Mein Problem ist jetzt, dass sich das Makro auf diese bestimmten Spalten beziehen soll. Also nicht auf A1 und A2 (wie der Macrorecorder es macht)!
Im Moment wird es nämlich so ausgeführt. Das Problem dabei ist dann, dass das Makro nur funktioniert, wenn die Spalten nebeneinander stehen.
Ich hoffe, das ist einigermaßen verständlich.
Kann mir jemand helfen?
Dank vorab!!
Nadi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auf Spaltennamen beziehen
06.01.2005 11:59:49
Matthias
Hallo Nadi,
poste mal dein Makro, dann kann man es anpassen.
Gruß Matthias
AW: Auf Spaltennamen beziehen
06.01.2005 12:51:17
Nadi
Im Moment sieht es so aus:

Sub Test_Gewichte()
'Nach der Spalte "Gross weight" suchen und anschließen diese selektieren
'und eine neue Spalte einfügen
Cells.Find(What:="Gross weight", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Selection.EntireColumn.Insert
'Nach der Spalte "Gross weight" suchen und anschließend diese selektieren
'und das Format von dieser in die neu eingefügte übertragen
Cells.Find(What:="Gross weight", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.EntireColumn.Select
Selection.Copy
If Not ActiveCell.Column = 1 Then ActiveCell.Offset(0, -1).Columns(1).EntireColumn.Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
'Neuer Spalte eine Überschrift geben
ActiveCell.FormulaR1C1 = "Diff. Gross Net"
ActiveCell.Select
'Farbe der Spaltenüberschrift ändern
Selection.Font.ColorIndex = 7
'In die 2. Zeile in dieser Spalte springen
ActiveCell.Rows(2).Select
'Berechnung durchführen: Gross weight - Net weight
ActiveCell.FormulaR1C1 = "=RC[1]-RC[2]"
'Aktive Zelle (Formel) wird soweit nach unten kopiert, wie die Spalte rechts daneben gefüllt ist.
'Da in der rechten Spalte manchmal auch leere Zellen auftauchen, wird außerdem noch nach der
'letzten beschriebenen Zell von unten gesucht. Denn sonst würde das Kopieren der Formel
'bei jeder leeren Zelle stoppen.
Selection.AutoFill Destination:=Range(Selection, Cells(65536, Selection.Column + 1).End(xlUp).Offset(0, -1))
End Sub

Gruß Nadi
Anzeige
AW: Auf Spaltennamen beziehen
06.01.2005 13:28:23
Matthias
Hallo Nadi,
hier meine Alternative:
Sub Test_Gewichte()
Dim sGross As Integer, sNet As Integer, sNeu As Integer
Dim z As Long
On Error Resume Next
sGross = Range("1:1").Find(what:="Gross Weight").Column
If Err.Number > 0 Then
MsgBox """Gross Weight"" wurde nicht gefunden!"
Exit Sub
End If
On Error GoTo 0
Cells(1, sGross).EntireColumn.Insert
sNeu = sGross
sGross = sGross + 1
On Error Resume Next
sNet = Range("1:1").Find(what:="Net Weight").Column
If Err.Number > 0 Then
MsgBox """Net Weight"" wurde nicht gefunden!"
Exit Sub
End If
Debug.Print sNeu, sGross, sNet
With Cells(1, sNeu)
.Value = "Diff. Gross Net"
.Font.ColorIndex = 7
End With
For z = 2 To Cells(65536, sGross).End(xlUp).Row
Cells(z, sNeu).FormulaR1C1 = "=RC[" & sGross - sNeu & "]-RC[" & sNet - sNeu & "]"
Next z
End Sub
Gruß,
Matthias
Anzeige
AW: Auf Spaltennamen beziehen
06.01.2005 15:39:12
Nadi
Vielen lieben Dank erstmal.
Da das alles für mich noch ziemliches Neuland ist, weiß ich noch nicht genau was das denn alles genau bedeutet.
Könntest du mir vielleicht noch schreiben, was die Einzelnen Passagen genau bedeuten / bewirken?
Das wäre toll!!!!
Dank vorab.
Gruss Nadi
AW: Auf Spaltennamen beziehen
06.01.2005 16:01:57
Matthias
Hallo Nadi,
Sub Test_Gewichte()
Dim sGross As Integer, sNet As Integer, sNeu As Integer
Dim z As Long
'Fehler abfangen
On Error Resume Next
'sGross auf die Spalte setzen, in der "Gross Weight" steht
sGross = Range("1:1").Find(what:="Gross Weight").Column
'falls nicht gefunden, Meldung und Sub beenden
If Err.Number > 0 Then
MsgBox """Gross Weight"" wurde nicht gefunden!"
Exit Sub
End If
'Fehler abfangen ausschalten
On Error GoTo 0
'vor die Spalte mit "Gross Weight" neue Spalte einfügen
Cells(1, sGross).EntireColumn.Insert
'und Spaltennummer merken
sNeu = sGross
'durch das Einfügen hat sich diese Spaltennummer ja im 1 erhöht:
sGross = sGross + 1
'wie oben, nur mit "Net Weight"
On Error Resume Next
sNet = Range("1:1").Find(what:="Net Weight").Column
If Err.Number > 0 Then
MsgBox """Net Weight"" wurde nicht gefunden!"
Exit Sub
End If
'Das kann eigentlich raus ;-)
'Debug.Print sNeu, sGross, sNet
'mit der obersten Zelle der neu eingefügten Spalte:
With Cells(1, sNeu)
'Wert setzen
.Value = "Diff. Gross Net"
'Farbe setzen
.Font.ColorIndex = 7
End With
'Schleife: von Zeile 2 bis zur letzten nichtleeren Zeile:
For z = 2 To Cells(65536, sGross).End(xlUp).Row
'Formel setzen
Cells(z, sNeu).FormulaR1C1 = "=RC[" & sGross - sNeu & "]-RC[" & sNet - sNeu & "]"
Next z
End
Sub
Ist also insesamt nicht viel anders, als du es schon gemacht hast, bis auf das Suchen der Spalte mit "Net Weight" :-)
Grüße,
Matthias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige