MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 10.03.2019, 12:32   #1
GerhardK
Neuer Benutzer
Neuer Benutzer
Standard Frage - Zählen von Werten ("A", "B" usw.)in einer dynamischen Spalte

Werte Forenmitglieder,
kann mir jemand helfen?? Ich habe eine Tabelle mit Tabellenblätter Januar - Dezember. Per VBA wird das aktuelle Tabellenblatt beim öffnen der Mappe angesteuert und die Spalte mit dem aktuellen Tagesdatum farblich hinterlegt. Mit einer Formel in der Zelle AJ5 wird die letzte befüllte Spalte angezeigt. Nun möchte ich aus dieser identifizierten Spalte aus 14 Zeilen (5 - 19) die Anzahl des Buchstaben "A" ermitteln und den Wert in G22 anzeigen lassen. Bislang habe ich 3 Tage probiert und gegoogelt, aber konnte den Lösungsansatz nicht finden .
Ein Bild des Tabellenblattes März und die Tabelle habe ich angehangen.
Recht herzlichen Dank für Eure Hilfe.
GerhardK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2019, 12:36   #2
steve1da
MOF Meister
MOF Meister
Standard

Hola,

eventuell mit Zählenwenn und Index oder Indirekt.
Bilder sind dafür idR aber nicht hilfreich.

Gruß,
steve1da
steve1da ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2019, 14:06   #3
GerhardK
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo steve1da,
Danke für Deine schnelle Antwort. Ich habe mehrere Anläufe mit INDEX und Zählenwenn unternommen, Formelergebnis NULL.. In AJ5 ist diese Formel zur Ermittlung der letzten befüllten Spalte hinterlegt: {=MAX(($D$5:$AH$19<>"")*SPALTE($D$5:$AH$19))} Die Zellen D5 bis AH19 werden per Dropdownfeld befüllt. In Zelle A4 Ermittlung des Monats: =DATUM(JAHR(Tagesstärke!J1);MONAT(Tagesstärke!J1)+2;1) , die Zellen D2 bis AH3 greifen auf A4 zurück. Wie schon geschrieben kann ich die Tabelle nicht soweit komprimieren, damit ich sie versenden kann. Vielleicht hilft diese Erläuterung weiter? Danke
GerhardK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2019, 14:18   #4
aloys78
MOF Meister
MOF Meister
Standard

Hallo Gerhard,

Zitat:

Wie schon geschrieben kann ich die Tabelle nicht soweit komprimieren, damit ich sie versenden kann

Es ist nicht nachvollziehbar, warum Du keine Beispieldatei mit den für die Aufgabenstellung relevanten Daten hier zur Verfügung stellen kannst.

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2019, 14:33   #5
GerhardK
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Zählen von Werten ("A", "B" usw.)in einer dynamischen Spalte

Hallo Aloys,
ich habe die Tabelle auf die notwendigen Tabellenblätter abgespeckt und hochgeladen. Sorry, bin Excel Anfänger...
Danke für Deine Bemühungen...
Angehängte Dateien
Dateityp: xlsm Mappe1.xlsm (117,3 KB, 6x aufgerufen)
GerhardK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2019, 14:39   #6
GerhardK
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Makro "Diese Arbeitsmappe"

Option Explicit

Sub auto_open()
Dim Monatsarray
Dim Monat As Integer
Dim Tag As Integer
Monatsarray = Array("none", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")

Monat = Month(Now())
Tag = Day(Now)

Worksheets(Monatsarray(Monat)).Select
Cells(1, (Tag * 1) - 3).Select

End Sub
GerhardK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2019, 16:16   #7
aloys78
MOF Meister
MOF Meister
Standard

Hallo Gerhard,

anbei mein Lösungsvorschlag. Der Code befindet sich unter DieseAbeitsmappe sowie im Modul1.

Da mir nicht klar war, wo das Ergebnis zu speichern ist, habe ich es mit MsgBox ausgegeben,

Gruß
Aloys
Angehängte Dateien
Dateityp: xlsm GerhardK_Mappe1.xlsm (130,8 KB, 14x aufgerufen)
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2019, 17:05   #8
GerhardK
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Danke...

Hallo Aloys,
herzlichen Dank für die schnelle Antwort und Realisierung. Die Speicherung kann / soll im Tabellenblatt "Tagesstärke" Zelle G9 erfolgen.-
Kannst Du mir noch beim Speicherort behilflich sein?
Danke und noch einen ruhigen Restsonntag..
herzliche Grüße..
Gerhard
GerhardK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2019, 17:33   #9
aloys78
MOF Meister
MOF Meister
Standard

Hallo Gerhard,

tausche im Module1 die Anweisung
Code:

MsgBox n
durch
Code:

ThisWorkbook.Worksheets("Tagesstärke").Range("G9") = n
Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.03.2019, 17:44   #10
GerhardK
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Herzlichen Dank Aloys

nachdem ich gegoogelt habe, bin ich zu einer ähnlichen Lösung gelangt. Das Ein oder Andere kann ich mir schon zusammenbauen und versuche es auch zu verstehen.
"Sheets("Tagesstärke").Range("G9").Value = n" habe ich mir so zusammengebaut.
wenn ich den Zeilenbereich erweitere, wird ein falsches Ergebnis angezeigt. Liegt aber sicherlich daran, dass ich in jedem Abschnitt die Legende angehangen habe.
Du hast mir auf jeden Fall sehr geolfen, dafür noch einmal herzlichen Dank.
noch einen ruhigen Abend..

Gerhard
GerhardK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 17:00   #11
GerhardK
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Aloys, darf ich Dich noch einmal um Hilfe bitten? Zur Zeit werden alle Einträge am aktuellen Tag gezählt, wie muss ich den Code verändern, damit ich nach einem konkreten Begriff (z.B. "A", oder "UA", KzH usw.) suchen kann. Danke für Deine Hilfe!
Gerhard
GerhardK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 19:49   #12
aloys78
MOF Meister
MOF Meister
Standard

Hallo Gerhard,

Zitat:

Zur Zeit werden alle Einträge am aktuellen Tag gezählt, ...

und in G9 gespeichert, obwohl es eigentlich nur für "A" gedacht ist.

Würde es Dir nicht helfen, wenn man beim Zählen differenzieren würde, und die Anzahl jeweils für die verschiedenen an diesem Tag vorhandenen Kennzeichen erfassen und darstellen würde.

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 18:05   #13
GerhardK
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Zählen von Werten

Hallo Alooys,
herzlichen Dank für Deine schnelle Rückantwort. Ich habe durch probieren und googeln wahrscheinlich nicht die eleganteste Variante herausbekommen, aber sie funktioniert. Anbei der Code, den ich einsetze:
Private Sub CmdBtn_auswerten_Click()
Dim mName As String
Monatsarray = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")
Monat = Month(Now())
mName = Monatsarray(Monat)
ThisWorkbook.Worksheets(mName).Activate
If ActiveSheet.Name = mName Then
Call Zählen_1(mName)
Call Zählen_2(mName)
Call Zählen_3(mName)
Call Zählen_4(mName)
Call Zählen_5(mName)
Call Zählen_6(mName)
Call Zählen_7(mName)
Call Zählen_8(mName)
Call Zählen_9(mName)
Call Zählen_10(mName)
Call Zählen_11(mName)
Call Zählen_12(mName)
Call Zählen_13(mName)
Call Zählen_14(mName)
Call Zählen_15(mName)
Call Zählen_16(mName)
Call Zählen_17(mName)
Call Zählen_18(mName)
Call Zählen_19(mName)
Call Zählen_20(mName)
Call Zählen_21(mName)

End If
End Sub

Diese Anweisung müßte in jedes Tabellenblatt Januar bis Dezember kopiert werden. Oder gibt es eine sparsamere Variante? Im Modul 1 sind folgende Makros 1 - 21 hinterlegt:
Sub Zählen_1(mName As String)
Dim c As Long
Dim r1 As Long, r2 As Long
Dim n As Long
c = Day(Now) + 3
r1 = 5: r2 = 156
With ThisWorkbook.Worksheets(mName)
n = WorksheetFunction.CountIf(.Range(.Cells(r1, c), .Cells(r2, c)), "A")
MsgBox n, vbOKOnly, "Anwesend" 'bzw speichern irgendwohin
ThisWorkbook.Worksheets("Tagesstärke").Range("G9") = n
End With
End Sub
Sub Zählen_2(mName As String)
Dim c As Long
Dim r1 As Long, r2 As Long
Dim n As Long
c = Day(Now) + 3
r1 = 5: r2 = 156
With ThisWorkbook.Worksheets(mName)
n = WorksheetFunction.CountIf(.Range(.Cells(r1, c), .Cells(r2, c)), "TZ")
MsgBox n, vbOKOnly, "Teilzeit" ' bzw speichern irgendwohin
ThisWorkbook.Worksheets("Tagesstärke").Range("G10") = n
End With
End Sub
usw. Die MsgBox könnte man herausnehmen, da die Werte ja in die entsprechenden Zellen G9 - G29 geschrieben werden und 21X Ok-Button bestätigen langwierig ist.
Dir noch einen schönen Abend und ein regenfreies Wochenende.
Gerhard

Geändert von GerhardK (15.03.2019 um 18:10 Uhr).
GerhardK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 18:36   #14
aloys78
MOF Meister
MOF Meister
Standard

Hallo Gerhard,

Zitat:

Ich habe durch probieren und googeln wahrscheinlich nicht die eleganteste Variante herausbekommen, aber sie funktioniert.

Dann brauchst Du ja keine weitere Unterstützung.

Die erwartest Du offenbar auch nicht, da Du auf meinen Vorschlag konkret nicht eingegangen hast.

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 18:45   #15
GerhardK
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Aloys,
sorry, so war meine Antwort nicht gemeint! Ja, ich bräuchte die Anzahl aller 21 Möglichkeiten die an dem aktuellen Datum vorkommen. Wie bereits erwähnt, habe ich sicherlich nicht die eleganteste Lösung entwickelt, sie geht garantiert noch kürzer. Da ich im Moment nur sporadisch an dieser Lösung weiterarbeiten kann, freue ich mich über jede Hilfestellung die ich erhalten kann. Ich bin blutiger Anfänger was VBA betrifft und längst nicht so versiert wie Du. Bitte teile mir mit, ob es eine weitere Möglichkeit gibt das Ziel zu erreichen.
Herzlichen Dank
Gerhard

Geändert von GerhardK (15.03.2019 um 19:19 Uhr).
GerhardK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.