Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1408to1412
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
Inhaltsverzeichnis

Zelle ermitteln

Zelle ermitteln
25.02.2015 20:13:53
claudelle

Hallo Zusammen,
vielleicht kann mir jemand mein Hindernis des Abends nehmen?
Folgende Überlegung liegt vor:
Ich habe Spalten B,C,D mit unterschiedlichen Werten gefüllt. Diese sind in Abhängigkeit voneinander absteigend nach Spalte D sortiert.
Wenn ich einen Wert in D auswähle, möchte ich, dass mein Makro ab diesem Wert -in einer beliebigen Zeile- bis zum Tabellenende die Werte für Spalte B und D in ein anderes Tabellenblatt nacheinander kopiert.
"Wenn in Spalte D der Wert kleiner als 3500000 ist (der ist dann z.B. in Zelle D15), dann nimm alle Werte ab B15 und C15 und kopiere sie nacheinander in Tabelle2."
Dabei ist D15 nicht fix sondern kann variiieren.
Hat jemand eine Idee?
Großen Dank!

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

Betreff
Datum
Anwender
Anzeige
AW: Zelle ermitteln
26.02.2015 08:20:05
fcs
Hallo Claudelle,
hier mal ein Basismakro. Dieses könnte man jetzt so einrichten, dass es per Schaltfläche (aus den formularsteuerelementen) oder auch per Doppelklick/Rechte-Maus-Klick in eine Zelle in Spalte D des Tabellenblatts gestartet wird.
Gruß
Franz
Sub Copy_BC_ab_aktive_Zeile()
Dim wksQ As Worksheet, Zeile_1&, Zeile_2&
Dim wksZ As Worksheet, Zeile_Z&
Set wksQ = ActiveSheet
Set wksZ = ActiveWorkbook.Worksheets("Tabelle2")
If wksQ.Name = wksZ.Name Then
MsgBox "Dieses Makro darf nicht gestartet werden, wenn """ & wksZ.Name _
& """ das aktive Tabellenblatt ist!", vbOKOnly, "Copy B:C nach " & wksZ. _
Name
Else
If ActiveCell.Column = 4 Then
If MsgBox("Daten aus Spalten B und C ab Zeile " & ActiveCell.Row _
& " nach Tabelle """ & wksZ.Name & """ kopieren?", _
vbQuestion + vbYesNo, "") = vbYes Then
With wksZ
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
End With
With wksQ
Zeile_1 = ActiveCell.Row
Zeile_2 = .Cells(.Rows.Count, 4).End(xlUp).Row
.Range(.Cells(Zeile_1, 2), .Cells(Zeile_2, 3)).Copy _
Destination:=wksZ.Cells(Zeile_Z, 1)
End With
End If
Else
MsgBox "Bitte vor dem Start des Makros eine Zelle in Spalte D wählen!", _
vbOKOnly, "Copy B:C nach " & wksZ.Name
End If
End If
End Sub

Anzeige
AW: Zelle ermitteln
27.02.2015 10:36:57
claudelle
Guten Morgen Franz,
schon mal Danke für deine Hilfsbereitschaft!
Ich sehe, dass ich die Aufgabenstellung unpräzise formuliert habe.
Also es geht mehr darum einen Wert für Spalte B und C pro Zeile in ein meine Tabelle "Dampf" ehemals Tabelle2 in Zelle F4 und F2 zu kopieren. Nachdem beide Werte in das Blatt kopiert wurden, soll nämlich ein Makro starten, dass wiederum in Abhängigkeit von den beiden Werten einen Wert in Zelle K5 ermittelt. Dieser soll nachdem das Makro in Tabelle "Dampf" durchlaufen ist, in ein neu generiertes TabellenBlatt in Spalte A ab Zeile 4 kopiert werden.
Ich habe gedacht ein verwertbares Makro geschrieben zu haben, aber das taugt nichts. Kann aber vielleicht als Idee für die Richtung, in die es gehen soll, gelten?
Option Explicit
Public P_th_Bereich As Range
Public m_Bereich As Range
Public T_Bereich As Range
Public Auswahl_P_th_gewählt As Double
Public Zelle_m As Range
Public Zelle_T As Range
Public Zelle_P_th As Range
Public Pel As Integer
Public Pel_Min As Integer
Public Pel_Max As Integer 'evtl. Single
Public P_th_Wert_Max As Double
Public P_th_Wert_1 As Double
Public P_th_Wert_2 As Double
Public P_th_Wert_3 As Double
Private Sub Ok_Click()
Auswahl_P_th.OptionButton1.Caption = P_th_Wert_1
Auswahl_P_th.OptionButton2.Caption = P_th_Wert_2
Auswahl_P_th.OptionButton3.Caption = P_th_Wert_3
'mit getroffener Auswahl wird dieser für T und m eine Variable zugeordnet um damit weiter  _
arbeiten zu können
If Auswahl_P_th.OptionButton1 = True Then
P_th_Wert_1 = Auswahl_P_th_gewählt
End If
If Auswahl_P_th.OptionButton2 = True Then
P_th_Wert_2 = Auswahl_P_th_gewählt
End If
If Auswahl_P_th.OptionButton3 = True Then
P_th_Wert_3 = Auswahl_P_th_gewählt
End If
'deklaration der Variablen siehe oben
m_abgas = tbl_Zieltabelle.Range("B4").End(xlDown).Row
T_abgas = tbl_Zieltabelle.Range("C4").End(xlDown).Row
P_th_an = tbl_Zieltabelle.Range("D4").End(xlDown).Row
'deklaration der Variablen siehe oben
Set m_Bereich = tbl_Zieltabelle.Range("B4:B" & m_abgas)
Set T_Bereich = tbl_Zieltabelle.Range("C4:C" & T_abgas)
Set P_th_Bereich = tbl_Zieltabelle.Range("D4:D" & P_th_an)
'ab Zeile 4 soll jeweils der errechnete Wert in das neue Tabellenblatt eingefügt werden
'Zeile_Pel = 4
'Jeder Wert, der geringer als die getroffen Auswahl_m und Auswahl_T ist, soll in Blatt " _
Dampfexpander" kopiert
'das Makro Massenstrom_wada_erhöhen aktiviert werden, wenn beide Zahlen eingefügt sind
'Wert der Zelle K5 in ein neu eingerichtetes Blatt kopiert werden
Application.ScreenUpdating = False
Sheets.Add(after:=Sheets(Sheets.Count)).Name = ("elektrische Leistung für" & Auswahl_P_th_gewä _
hlt)
Sheets("elektrische Leistung für" & Auswahl_P_th_gewählt).Range("A1").Value = "elektrische  _
Leistung [kWh]"
If Zelle_P_th.Value <= Auswahl_P_th_gewählt Then
Zelle_P_th = Zelle_m And Zelle_P_th = Zelle_T
For Each Zelle_m In m_Bereich
If (Zelle_m <= Zelle_P_th) Then ''bis hier hin gedebuggt
Zelle_m.Copy
Sheets("tbl_Dampfexpander").Range("F4").PasteSpecial Paste:=xlPasteValues
For Each Zelle_T In T_Bereich
If Zelle_T <= Auswahl_T Then
Zelle_T.Copy
Sheets("tbl_Dampfexpander").Range("F2").PasteSpecial Paste:=xlPasteValues
Call Massenstrom_wada_erhöhen
Sheets("tbl_Dampfexpander").Range("K5").Copy
With Sheets("elektrische Leistung für" & Auswahl_m & Auswahl_T)
.Range("A" & Zeile_Pel).PasteSpecial Paste:=xlPasteValues
Zeile_Pel = Zeile_Pel + 1
End With
End If
Next Zelle_T
End If
Next Zelle_m
Worksheets("elektirsche Leistung für" & Auswahl_m & "," & Auswahl_T).Select
With Sheets("elektrische Leistung für" & Auswahl_m & "," & Auswahl_T)
If .ChartObjects.Count > 0 Then .ChartObjects.Delete
Pel = .Range("A4").End(xlDown).Row
Pel_Min = Application.WorksheetFunction.Min(Range("A4:A" & Pel))
Pel_Max = Application.WorksheetFunction.Max(Range("A4:A" & Pel))
With .ChartObjects.Add(150, 10, 500, 300)
.Name = "elektrische Leistung [kWh]"
With .Chart
.SetSourceData Source:=Sheets("elektrische Leistung für" & Auswahl_m & "," &  _
Auswahl_T).Range("A4:A" & Pel)
.ChartType = xlXYScatterSmooth
.HasLegend = False
.HasTitle = True
.ChartTitle.Text = .Parent.Name
With .Axes(xlValue)
.MinimumScale = Pel_Min
.MaximumScale = Pel_Max
.MajourUnit = 5
End With
End With
End With
End With
Application.ScreenUpdating = True
OptionButton1 = False
OptionButton2 = False
OptionButton3 = False
OptionButton4 = False
OptionButton5 = False
OptionButton6 = False
Worksheets("elektrische Leistung für" & Auswahl_m & "," & Auswahl_T).Select
Show Neue_Auswahl_treffen
End Sub

Anzeige
AW: Zelle ermitteln
27.02.2015 11:38:56
fcs
Hallo Claudelle,
ich hab jetzt in etwa verstanden was du vorhast.
Aber ohne Beispiel-Datei wird es schwierig zu unterstützen.
Wenn möglich lade die Datei hier hoch, du kannst sie aber auch an die E-Mail-Adresse unter meinem Profil schicken.
Gruß
Franz

AW: Zelle ermitteln
26.02.2015 08:22:20
MCO
Guten Morgen!
Deine Beschreibung läßt noch eine Fragen offen.
Wieso willst du die Werte in D noch prüfen, ob sie kleiner als der gewählte Wert sind, wenn du die Spalte absteigend sortiert hast?
Nach deiner Beschreibung wird erst der Wert KLEINER Zellwert in das andere Tabellenblatt kopiert, also die nächste Zeile. Dann könnte man, statt Zeile für Zeile vorzugehen, auch einfach den Block kopieren, oder?
Was meinst du mit Tabellenende: den letzten Eintrag oder die letzte Zeile der Tabelle (rows.count)?
Wohin in Tabelle 2 sollen die Werte kopiert werden? Sollen vorhandene Einträge gelöscht werden? Oder hinten dran?
Die Antworten hab ich einfach mal geraten und was gebastelt.
Das Makro startet mit dem ersten Eintrag im Kontextmenü (re. Maustaste).
Gruß, MCO
https://www.herber.de/bbs/user/96010.xlsm

Anzeige
AW: Zelle ermitteln
27.02.2015 10:06:30
claudelle
Guten Morgen MCO,
Wieso willst du die Werte in D noch prüfen, ob sie kleiner als der gewählte Wert sind, wenn du die Spalte absteigend sortiert hast?
Das mache ich daher, dass ich in Spalte D von B und C abhängige Werte in einem Diagramm darstellen lasse.
Daher muss das absteigend sortiert werden (also der Optik wegen).
Nach deiner Beschreibung wird erst der Wert KLEINER Zellwert in das andere Tabellenblatt kopiert, also die nächste Zeile. Dann könnte man, statt Zeile für Zeile vorzugehen, auch einfach den Block kopieren, oder?
Also in Spalte B habe ich zum beispiel eine Masse, in Spalte C eine Temperatur. Aus physikalischen Gründen sind die von einander abhängig und werden so gemessen. in Spalte D ist in Abhängigkeit von beiden Parametern ein errechneter Wert.
Wenn ich nun einen Wert aus Spalte D via UserForm wähle soll Spalte D nach dem nächsten kleiner gleich gewählten Wert durchsucht werden. Nehmen wir an, dieser sei beispielsweise in D15, so dass für diesen Wert die Werte aus B15 und C15 in mein Tabellenblatt "Dampf" kopiert werden.
Da habe ich nämlich ein Makro hinterlegt das reagiert, wenn die Werte aus B und C in Zelle F4 und F2 kopiert wurden.
Dieses Makro rechnet mir einen Wert für Zeile K 5 in Tabelle "Dampf" aus, welcher wiederum kopiert und in ein komplett neu eröffnetes Tabellenblatt zunächst in Zelle A4 einfügen.
Ende des Befehls, nächste Zeile (also B16 und C16).
Was meinst du mit Tabellenende: den letzten Eintrag oder die letzte Zeile der Tabelle (rows.count)? letzter Eintrag
Wohin in Tabelle 2 sollen die Werte kopiert werden? Sollen vorhandene Einträge gelöscht werden? Oder hinten dran? "...welcher wiederum kopiert und in ein komplett neu eröffnetes Tabellenblatt zunächst in Zelle A4 einfügen." und in dieser Spalte fortlaufen, also A5, A6,..
Ich schau mir gleich das Makro an und gebe Rückmeldung, MCO.
Sag mir, ob meine Beschreibung soweit verständlich ist. Ansonsten könnte ich dir auch meine Mappe zuschicken?
Großes Danke schon mal für die Hilfe bis hierhin!!
Gruß
Claudelle

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige