Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
904to908
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
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

65 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige