Supportnet / Forum / Tabellenkalkulation
GROSSES EXCEL PROBLEM
Frage
Hallo!
Habe 2 knifflige Probleme bei Excel und leider noch keine Lösung gefunden:
1. Leeres Tabellenblatt in Excel:
In Spalte A werden untereinander verschiedene Zahlenwerte eingetragen, wobei täglich ca. 80 neue dazukommen (z.B.: 9, 19, 0, 27, 48, 13 ...) nun soll in einer Fixen Zelle B1 immer der [u] Wert[/u] der letzten Zahl aus Spalte A angezeigt werden.
2. Spalte C ist fortlaufend Nummeriert von 1-20, in Spalte D stehen Zahlenwerte. In Spalte E soll nun immer wenn in D der Wert 8 auftaucht (kann auch mehrfach sein) der zugehörige C Wert angezeigt werden.
z.B:
C D E (Ergebnis)
1 6 3 (da 8 in D vorhanden)
2 3 5 (da 8 in D vorhanden)
3 8
4 2
5 8
6 9
Wäre Super, wenn das jemand lösen könnte.
mlg WIlli ;-)
Antwort 1 von coros
Moin Willi,
kopiere nachfolgenden VBA Code in das VBA Projekt der Tabelle, in dem er wirken soll.
Bei dem Code wird immer der letzte Eintrag aus Spalte A in Zelle B1 angezeigt. Außerdem wird die Spalte C auf die Zahl 8 überprüft. Ist diese in der durch die For/Next Schleife angesprochenen Zelle vorhanden, wird der Wert aus Spalte C in Spalte E angezeigt.
Ich hoffe, dass ich Deine Aufgabenstellung richtig verstanden habe und dass die Lösung so ist, wie Du es Dir vorgestellt hast. Wenn nicht oder bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
kopiere nachfolgenden VBA Code in das VBA Projekt der Tabelle, in dem er wirken soll.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Letzte_Zeile_Spalte_A As Long, Letzte_Zeile_Spalte_C As Long, _
Wiederholungen As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
Letzte_Zeile_Spalte_A = Range("A65536").End(xlUp).Row
Letzte_Zeile_Spalte_C = Range("C65536").End(xlUp).Row
Cells(1, 2) = Cells(Letzte_Zeile_Spalte_A, 1)
For Wiederholungen = 1 To 20 ´Letzte_Zeile_Spalte_C
If Cells(Wiederholungen, 4) = 8 Then
Cells(Wiederholungen, 5) = Cells(Wiederholungen, 3)
Else
Cells(Wiederholungen, 5) = ""
End If
Next Wiederholungen
Application.EnableEvents = True
End SubBei dem Code wird immer der letzte Eintrag aus Spalte A in Zelle B1 angezeigt. Außerdem wird die Spalte C auf die Zahl 8 überprüft. Ist diese in der durch die For/Next Schleife angesprochenen Zelle vorhanden, wird der Wert aus Spalte C in Spalte E angezeigt.
Ich hoffe, dass ich Deine Aufgabenstellung richtig verstanden habe und dass die Lösung so ist, wie Du es Dir vorgestellt hast. Wenn nicht oder bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von rainberg
Hallo Willi,
Formellösungen:
1.
=INDIREKT("A"&ANZAHL2(A:A))
2.
=INDEX(C$1:C$6;KKLEINSTE(WENN((D$1:D$6=8);ZEILE($1:$6));ZEILE()))
Formel2 ist eine Matrixformel, deren Eingabe mit der Tastenkombination Strg+Shift+Enter abgeschlossen werden muß.
Dadurch wird sie in { } eingeschlossen.
Gruß
Rainer
Formellösungen:
1.
=INDIREKT("A"&ANZAHL2(A:A))
2.
=INDEX(C$1:C$6;KKLEINSTE(WENN((D$1:D$6=8);ZEILE($1:$6));ZEILE()))
Formel2 ist eine Matrixformel, deren Eingabe mit der Tastenkombination Strg+Shift+Enter abgeschlossen werden muß.
Dadurch wird sie in { } eingeschlossen.
Gruß
Rainer
Antwort 3 von Bill1744
Hallo coros, hallo Rainer!
Besten Dank für Eure rasche Hilfe - habe Problem A mit Rainers Formel und B mit coros Code gelöst, den ich nun, nachdem ich die Codestruktur gesehen und verstanden habe noch leicht adaptieren konnte:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Letzte_Zeile_Spalte_J As Long, Wiederholungen As Long, Zähler As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
Letzte_Zeile_Spalte_J = Range("C65536").End(xlUp).Row
If Cells(14, 10) = 3 Then
Zähler = 20
For Wiederholungen = 2 To 13 ´Letzte_Zeile_Spalte_C
If Cells(Wiederholungen, 10) = 0 Then
Cells(Zähler, 10) = Cells(Wiederholungen, 9): Zähler = Zähler + 1
End If
Next Wiederholungen
Else
Cells(20, 10) = "": Cells(21, 10) = "": Cells(22, 10) = ""
End If
Application.EnableEvents = True
End Sub
Mein Problem ist endlich gelöst - Super vielen Dank Euch beiden.
Willi
Besten Dank für Eure rasche Hilfe - habe Problem A mit Rainers Formel und B mit coros Code gelöst, den ich nun, nachdem ich die Codestruktur gesehen und verstanden habe noch leicht adaptieren konnte:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Letzte_Zeile_Spalte_J As Long, Wiederholungen As Long, Zähler As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
Letzte_Zeile_Spalte_J = Range("C65536").End(xlUp).Row
If Cells(14, 10) = 3 Then
Zähler = 20
For Wiederholungen = 2 To 13 ´Letzte_Zeile_Spalte_C
If Cells(Wiederholungen, 10) = 0 Then
Cells(Zähler, 10) = Cells(Wiederholungen, 9): Zähler = Zähler + 1
End If
Next Wiederholungen
Else
Cells(20, 10) = "": Cells(21, 10) = "": Cells(22, 10) = ""
End If
Application.EnableEvents = True
End Sub
Mein Problem ist endlich gelöst - Super vielen Dank Euch beiden.
Willi

