Herbers Excel-Forum - das Archiv
Werte per Makro auslesen
Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Betrifft: Werte per Makro auslesen
von: Hammes
Geschrieben am: 14.12.2006 10:56:23
Hallo zusammen!
Ich würde gerne die Merkmale zu Werten einer Tabelle, welche innerhalb eines bestimmten Intervalles liegen, per Makro ausgeben lassen. Das Ergebnis soll aber in einer Spalte auf einem bereits befüllten Tabellenblatt angezeigt werden.
Beispiel: Alle Merkmale mit einem Wert zwischen 100 und 300 (Unterstriche zählen als Platzhalter):
Merkmal_____Wert
--------------------
A___________110
B___________50
C___________150
D___________250
E___________10
F___________500
Gewünschtes Ausgabeergebnis in bereits existierender Tabelle:
Merkmal_____Beliebige andere Werte (bereits vorher fix eingetragen)
-------------------------------------------------------
A___________XXX
C___________XXX
D___________XXX
Kann mir da wer helfen?
Danke & Gruß,
Bastian
Betrifft: AW: Werte per Makro auslesen
von: Hammes
Geschrieben am: 14.12.2006 13:24:34
Niemand?
Betrifft: AW: Werte per Makro auslesen
von: fcs
Geschrieben am: 14.12.2006 13:58:04
Hallo Bastian,
evtl. Hilft die folgendes Makro weiter. Die Namen der Tabellen muss du ggf. anpassen.
Gruss
Franz
Sub WerteSelektieren()
'Merkmale in aktueller Tabelle Spalte A, deren Werte in Spalte B den eingegebenen _
Wertebereich erfüllen werden in Ausgabetabelle in Spalte A eingetragen
Dim wks As Worksheet, wksAusgabe As Worksheet, Zeile As Long, ZeileAusgabe As Long
Dim Unten As Double, Oben As Double
Set wks = ActiveSheet
Set wksAusgabe = ActiveWorkbook.Worksheets("Ausgabe")
Unten = Val(InputBox("Unterer Wert:"))
Oben = Val(InputBox("Oberer Wert:"))
ZeileAusgabe = wksAusgabe.Cells(wksAusgabe.Rows.Count, "A").End(xlUp).Row
With wks
If Oben >= Unten Then
For Zeile = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(Zeile, "B").Value >= Unten And .Cells(Zeile, "B").Value <= Oben Then
ZeileAusgabe = ZeileAusgabe + 1
wksAusgabe.Cells(ZeileAusgabe, "A").Value = .Cells(Zeile, "A").Value 'merkmal eintragen
wksAusgabe.Cells(ZeileAusgabe, "B").Value = .Cells(Zeile, "B").Value 'Wert eintragen
End If
Next
Else
MsgBox "Oberer Wert muss größer oder gleich unterer Wert sein"
End If
End With
End Sub

 |
Betrifft: AW: Werte per Makro auslesen
von: Hammes
Geschrieben am: 14.12.2006 17:18:16
Hi,
das Makro war schonmal nicht schlecht, allerdings werden Merkmale und Zahlen nicht untereinander dargestellt, sondern mit Leerzeichen (Wenn auch in der Ursprungstabelle Leerzeichen enthalten sind) und es werden alle Merkmale & Zahlen ausgegeben, unabhängig von den eingegebenen Grenzen (untere Grenze -100000, obere Grenze 100000).
Noch eine Idee?
Danke & Gruß,
Bastian
Betrifft: AW: Werte per Makro auslesen
von: fcs
Geschrieben am: 14.12.2006 19:40:07
Hallo Bastian,
Leere Zeilen nicht zu berücksichtigen ist kein Problem.
Das Problem mit dem Zahlenbereich verstehe nicht, das funktioniert bei mir einwandfrei.
Das Makro prüft >= unterer Wert und <= oberer Wert, also werden alle Merkmale gelistet, die zwischen diesen beiden Werten liegen einschließlich der Werte selber.
Was für Zahlenwerte stehen denn in deiner Tabelle?
Lade ggf. mal eine Beispieltabelle hoch.
Gruss
Franz
Makro modifiziert wg Leerzeilen
Sub WerteSelektieren()
'Merkmale in aktueller Tabelle Spalte A, deren Werte in Spalte B den eingegebenen _
Wertebereich erfüllen werden in Ausgabetabelle in Spalte A eingetragen
Dim wks As Worksheet, wksAusgabe As Worksheet, Zeile As Long, ZeileAusgabe As Long
Dim Unten As Double, Obern As Double
Set wks = ActiveSheet
Set wksAusgabe = ActiveWorkbook.Worksheets("Ausgabe")
Unten = Val(InputBox("Unterer Wert:"))
Oben = Val(InputBox("Oberer Wert:"))
ZeileAusgabe = wksAusgabe.Cells(wksAusgabe.Rows.Count, "A").End(xlUp).Row
With wks
If Oben >= Unten Then
For Zeile = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
If Not IsEmpty(.Cells(Zeile, "B").Value) Then
If .Cells(Zeile, "B").Value >= Unten And .Cells(Zeile, "B").Value <= Oben Then
ZeileAusgabe = ZeileAusgabe + 1
wksAusgabe.Cells(ZeileAusgabe, "A").Value = .Cells(Zeile, "A").Value 'merkmal eintragen
wksAusgabe.Cells(ZeileAusgabe, "B").Value = .Cells(Zeile, "B").Value 'Wert eintragen
End If
End If
Next
Else
MsgBox "Oberer Wert muss größer oder gleich unterer Wert sein"
End If
End With
End Sub

|