Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variablen Bereich definieren

Variablen Bereich definieren
11.09.2007 15:58:00
Gunnar
Hallo Leute,
ich importiere mit Hilfe von MS-Query Daten aus verschiedenen Datenquellen (meist über ODBC) in Excel. Das Problem dabei ist, dass einige Zahlenwerte als Text geliefert werden. Folgende Lösung habe ich bis jetzt:

Sub Makro1()
Range("N2").Select
ActiveCell.FormulaR1C1 = "=RC[-7]*1"
Range("O2").Select
ActiveCell.FormulaR1C1 = "=RC[-7]*1"
Range("N2:O2").Select
Selection.Copy
Range("M2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range("N2:O18993").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Range("G2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Columns("N:O").Select
Selection.Delete Shift:=xlToLeft
End Sub


Also ich multipliziere die Textwerte einfach mit 1, kopiere sie über die Textwerte drüber und lösche die "Rechenspalten" wieder weg. Funktioniert auch alles spitze, aber wie kann ich den Teil "Range("N2:O18993").Select" durch einen variablen Wert für die Spalte O ersetzen, dass die Formel immer nur bis zum letzten Datensatz (also N2:O-letzter-DS) kopiert wird, da sich bei der nächsten Abfrage der Datenbereich durchaus um einige 100 Datensätze +/- schwanken kann, ich aber vermeiden möchte, dass die Rechnung über den Datenbereich hinaus durchgeführt wird. Oder kann man das Problem insgesamt eleganter lösen?
Ich bin mir sicher, dass ich, wie bislang immer, hier auf Leute mit Spitzenideen treffe... :-)
Danke im Voraus & Gruss
Gunnar

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen Bereich definieren
11.09.2007 16:14:00
Rudi
Hallo,
die Lösung mit den Hilfsspalten is überflüssig.

Sub tt()
Dim rngC As Range
For Each rngC In Range(Cells(2, 7), Cells(2, 7).End(xlDown).Offset(0, 1))
rngC.NumberFormat = "General"
rngC = rngC * 1
Next
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
Korrektur
11.09.2007 16:16:00
Rudi
Hallo,
meine Schleife ist Blödsinn.

Sub tt()
With Range(Cells(2, 7), Cells(2, 7).End(xlDown).Offset(0, 1))
.NumberFormat = "General"
.Value = .Value
End With
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Korrektur
11.09.2007 16:57:20
Gunnar
Hallo Rudi,
ich hatte nicht mal Zeit den ersten Code auszuprobieren...
...also hab ich direkt den zweiten genommen und kann nur wieder sagen
...kurz, prägnant, funktionierend, SPITZE!!! :-)
Danke & Gruss
Gunnar
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige