online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Nopummel vom 22.05.2021, 08:16 Options

In Makro auf anderes Tabellenblatt verweisen

Hi zusammen,

ich habe folgendes Problem. Bei meinem Makro will ich Daten aus Tabellenblatt2 mit einem Wert aus Tabellenblatt1 vergleichen und zählen. Das ganze funktioniert auch ganz gut wenn ich alles in einem Tabellenblatt mache, aber die Ausgabe und der Vergleichswert soll eben in einem anderen Tabellenblatt stehen.

Hier mein Makro:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


Dim suchwert As Date
Dim i As Double
Dim counter As Double

suchwert = Range("C11").Value 'Zelle, in der das zu vergleichende Datum steht

For i = 1 To Range("D65536").End(xlUp).Row
If Len(CStr(Worksheets(2).Cells(i, 1))) = 5 Then 'alle Zeilen mit Nr. nach Schema x.x.x
If Not IsError(Worksheets(2).Cells(i, 4)) Then
If Worksheets(2).Cells(i, 4).HasFormula = False Then
If Not IsEmpty(Worksheets(2).Cells(i, 4)) Then
If Worksheets(2).Cells(i, 4) < suchwert Then
counter = counter + 1
End If
End If
End If
End If
End If
Next

Range("D32").Value = counter 'Zelle, in der das Ergebnis stehen soll
End Sub

Vielen Dank für eure Hilfe.

Gruß
Sebastian


Antwort schreiben

Antwort 1 von Hajo_Zi vom 22.05.2021, 08:43 Options

Hallo Sebastian,

der Code sieht eigentlich ok aus. Ich würde nur die andere Tabelle nicht über die nNummer ansprechen 2 sndern über den Namen "Tabelle2". Es nicht immer sicher das die Tabelle immer an zweiter Stelle ist.

Gruß Hajo

Antwort 2 von Nopummel vom 22.05.2021, 09:08 Options

Hallo Hajo,

leider funktionert der Code aber nicht einwandfrei, auch wenn ich "Tabelle2" reinschreibe. Ich bin der Meinung, dass es daran liegt, dass ich über 2 Tabellenblätter gehe, denn wenn ich es nur über eins laufen lasse funktioniert es.

Gruß
Sebastian

Antwort 3 von Hajo_Zi vom 22.05.2021, 09:13 Options

Hallo Sebastian,

ich bin davon ausgegangen der Code ist nicht unter Tabelle2. Da braucht man die Tabelle nicht angeben. Du hatttest geschrieben 2 unterschiedliche Tabelle.
Vielleicht solltest Du mal beschreiben was Du machen willst, vielleicht ist Dein Code falsch. Ich kann mir die Aufgabe nur aus dem Code auslesen.

Gruß Hajo

Antwort 4 von Nopummel vom 22.05.2021, 09:31 Options

Hallo Hajo,

ich habe im ersten Tabellenblatt das Datum stehen welches als Suchkriterium bzw. Vergleichswert dienen soll. Die Daten welche mit diesem Suchkriterium verglichen werden, stehen in Tabellenblatt 2. Die Ergebnisausgabe soll dann aber wieder in Tabellenblatt1 ausgegeben werden.

Ich habe nur zum testen den Code einmal nur in einem Tabellenblatt ausgeführt, dafür habe ich dann das Suchkriterium in das Blatt mit den Vergleichsdaten geschrieben und im Makro darauf verwiesen. Auch die Ergebnisausgabe habe ich dann in diesem Tabellenblatt gemacht. Bei diesem Testlauf habe ich dann logischerweise nicht auf andere Blätter verwiesen. Der Test war erfolgreich, nur wenn ich das jetzt über 2 Blätter mache zeigt er mir nicht den richtigen Wert an.

Gruß
Sebastian

Antwort 5 von Hajo_Zi vom 22.05.2021, 09:44 Options

Hallo Sebastian,

Dein Makro wird jedesmal ausgeführt, wenn eine Zelle ausgewählt wir. Das ist bestimmt nicht korrekt?
Du suchst einen Wert aus Zelle C1, Wird dieser eingegeben oder ist das eine Formel?
Falls Eingabe, würde ich doch nur suchen falls ein neuer Wert eingegeben wird.
Ich würde vermuten Du suchst in Spalte D wie oft der Wert aus C4 vorkommt. Das geht auch ohne Schleife und auch ohne VBA

=Zählenwenn(Tabelle2!D:D;C4)

Gruß Hajo

Antwort 6 von Nopummel vom 22.05.2021, 09:58 Options

Hi,

leider ist es nicht ganz so einfach. Der Wert in C11 ist eine Formel =heute(). Daher soll der Wert, welcher durch das Makro erzeugt wird auch regelmäßig neu berechnet werden. Dieser Wert soll jetzt mit Werten aus Spalte D in Tabelle2 verglichen werden, und wenn die Bedingung passt gezählt werden. In Spalte D stehen aber teilweise auch Formeln, die auf andere Zellen in Spalte D zugreifen, diese Werte, welche durch die Formeln entstehen sollen nicht mit eingerechnet werden.
Ist blöd zu erklären, kann ich dir evtl. mal meine Arbeitsmappe zuschicken und du schaust dir das mal an, das kann eigentlich nur eine Kleinigkeit sein, die verändert werden muss.

Gruß
Sebastian

Antwort 7 von Hajo_Zi vom 22.05.2021, 10:11 Options

Hallo Sebastian,

wir haben ohne Datei angefangen ud ich versuche es jetzt Live.
Option Explicit
Dim Dawert As Date

Private Sub Worksheet_Calculate()
Dim LoCounter As Long
Dim LoI As Long
Dim Loletzte As Long
If Dawert = 0 Then Dawert = Range("C4")
With Worksheets("Tabelle2")
Loletzte = IIf(IsEmpty(.Cells(.Rows.Count, 4)), .Cells(.Rows.Count, 4).End(xlUp).Row, .Rows.Count)
For LoI = 1 To Loletzte
If Not IsError(.Cells(LoI, 4)) Then
If .Cells(LoI, 4).HasFormula = False Then
If Not IsEmpty(.Cells(LoI, 4)) Then
If IsDate(.Cells(LoI, 4)) < Dawert Then
If .Cells(LoI, 4) = Dawert Then LoCounter = LoCounter + 1
End If
End If
End If
End If
Next LoI
End With
Range("D32") = LoCounter
End Sub

Falls das nicht klappt schicke mal Datei. Auf meiner HP steht eine Mail-Adresse.

Gruß Hajo

Antwort 8 von Nopummel vom 22.05.2021, 10:20 Options

Hey Hajo,

super damit klappt es jetzt. Tausend Dank!

Viele Grüße
Sebastian

Ähnliche Themen

Aktuelles Tabellenblatt in Excel mit Makro kopieren
TR007  22.12.2007 - 165 Hits - 2 Antworten

Makro ausführen auf 2. Tabellenblatt
hpeter  12.02.2008 - 72 Hits - 10 Antworten

Formel auf anderes Tabellenblatt verweisen...
Lefty04  19.12.2008 - 27 Hits - 7 Antworten

Tabellenblatt kopieren, aber ohne Makro
hpt  11.03.2009 - 948 Hits - 6 Antworten

Tabellenblatt per Makro wechseln
afetinci  06.04.2009 - 202 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026