macht es ggf. Sinn beim Klick auf eines der drei Objekte die jeweils anderen auf Weiß zu setzen, unabhängig welche Farbe sie zuvor hatten? Bei einer Ampel (Statusampel) kann ja nur gleichzeitig eine Farbe aktiv sein.

Andersformuliert: Keine Abfrage auf den bisherigen Farbstatus, sondern rot färben und die beiden anderen weiß

ActiveSheet.Shapes.Range(Array("Oval 1")).Fill.ForeColor.RGB = RGB(255, 255, 0)
ActiveSheet.Shapes.Range(Array("Oval 2")).Fill.ForeColor.RGB = RGB(255, 255, 255)
ActiveSheet.Shapes.Range(Array("Oval 3")).Fill.ForeColor.RGB = RGB(255, 255, 255)

den Rest brauchst Du vermutlich gar nicht an Einstellungen, wenn es einfach nur rot, gelb, grün bzw. weiß sein soll.
In meinem Beispiel heißen die Objekte eben Oval 1 - 3, musst Du bei Dir entsprechend anpassen.

...zur Antwort

http://excel-inn.de/ dort Diagramme -> stufen- oder treppendiagramm.

Ich bin kein Diagramm-"Mensch", die Sache scheint aber nur so kompliziert zu lösen zu sein wie da beschrieben. Ggf. kann man die Hilfstabelle mit Formeln verbessert erstellen, die Fummelei mit dem Diagramm bleibt aber

...zur Antwort

Neben dem bereits genannten Tipp mit Duplikate entfernen, Makro oder evtl komplexen Formellösung würde mir noch eine Pivottabelle einfallen. Einfach nur die Spalte mit den Einträgen zu Zeilen übernehmen ergibt die Liste wie gewünscht 

...zur Antwort

Es kommt darauf an, welches Level gefragt ist bzgl. der VBA Kenntnisse und ob das sich nur auf Excel bezieht oder auf das gesamte Officepaket.

Wenn jemand gesucht wird, der in der Lage ist in Excel ein einfaches Makro zu stricken (bspw. das Laden von Daten aus externer Quelle anstoßen und Pivottabellen u.ä. automatisiert zu aktualisieren oder das Beliebte Spiel: Datensätze kopieren/löschen) dann kann man sich das schon in kurzer Zeit beibringen: Grundlagen verstehen und die Lücken per Google schließen. Letztlich habe ich VBA auch gelernt, als ich es gebraucht habe und nicht auf der grünen Wiese.
Einstieg: http://www.online-excel.de/excel/grusel_vba.php?f=6

Man kann mit VBA über simple Makros hinaus natürlich komplexe Anwendungen bauen. Wenn so etwas gefragt ist, wirst Du nicht glücklich werden.

Wie steht es denn um Deine allgemeinen Excelkenntnisse oder ist das im dem Job gar nicht gefragt?

...zur Antwort

wenn die lange Liste bislang in A, B, C steht:

For i = 2 To 31
Range(Cells(1 + (i - 1) * 96, 1), Cells(i * 96, 3)).Cut Destination:=Cells(1, (i - 1) * 3 + 1)
Next

aber erst mal mit einer Kopie der Datei testen....

...zur Antwort

Lässt sich das störende Leerzeichen nicht einfach mit Suchen/Ersetzen beseitigen? ggf. "; " durch ";" ersetzen, damit die Leerzeichen innerhalb einer Zelle erhalten bleiben.

Alternativ den Bereich durchgehen und zu einem Text aneinanderhängen

For Each c In Range("A1:E10")
If c.value <> "" Then Text = Text & c.Value & ";"
Next
Range("F1").Value = Text

...zur Antwort

Per Makro kannst Du natürlich die Zeilen ausblenden, die kein Häkchen enthalten und dann drucken. Wahlweise im Makro nur ausblenden und dann manuell nach Wunsch die Druckeinstellungen festlegen oder das Makro auch zum Druck selbst nutzen. Das solltest Du dann mit dem Makrorekorder aufzeichnen.

Ausblenden (hier Annahme Spalte A, sonst die 1 ersetzen durch die richtige Spalte - in VBA nummerisch!)

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1).Value <> 1 Then Rows(i).Hidden = True
Next

Einblenden:
Rows.Hidden = False

Dazwischen Deine Aufzeichnung zum Druck selbst.

...zur Antwort

nur mit Makro worksheet_change....

Du musst das aber noch etwas konkreter Formulieren: Welche Zellen sollen überwacht werden, wirklich alle?? Wo soll das Datum eingetragen werden, denn zumindest diese Spalte muss man ausschließen, sonst gibt es eine Endlosschleife (Zeile geändert -> Makro startet und trägt Datum ein -> das ist wiederum eine Änderung, Makro läuft wieder und so endlos weiter....)

Datum nur eintragen, wenn etwas erstmals gefüllt wird oder auch bei einer Änderung einer bereits gefüllten Zelle?

...zur Antwort

oh weh, nicht gerade meine starke Seite. Workaround über das ausblenden von den nicht gewünschten Tabellenblättern ist das einzige, was mir spontan in den Sinn kommt.

...zur Antwort

ich kenne keine außer der mühsamen

=zählenwenn(Januar!A6:Z6;"k")+zählenwenn(Februar!A6:Z6;"k")....

Sonst halt per Makrofunktion, falls das in Betracht kommt.

...zur Antwort

https://de.wikipedia.org/wiki/P%C3%B6keln hier beschrieben die antibakterielle Funktion von Nitrit und die Wirkung bzw. Rotfärbung

Wenn Dir die Haltbarkeit egal ist, würde ich es mal auf einen Versuch ankommen lassen. Geschmacklich ist Zucker schon aus guten Grund drin und auch die Optik (Farbe) wird leiden, wenn Du nur Kochsalz nimmst.

...zur Antwort

range("A1").value=i

wenn Du es kürzer machen willst, kannst Du die Count Eigenschaft verwenden, dann entfällt auch die for-/next schleife

range("A1").value=ActiveSheet.Comments.Count

...zur Antwort

Wie durchsuche ich meine Excel Datei nach bestimmten Wörtern pro Spalte, um bei der Dateneingabe und der Suche nach der richtigen Excelzeile Zeit zu sparen?

Meine Datentabllen wachsen und wachsen. Dennoch möchte ich die gesuchte Excel Zeile möglichst schnell finden.

Ich hatte hierfür schonmal eine Suchzeile, inder mir die Zeile mit dem Wert ausgegeben wird, welche ich für die erste Spalte als Vergleich gesucht habe.


=WENNFEHLER(INDEX($A$2:$Z$4400;VERGLEICH($AC$4;$A$2:$A$4400;0);VERGLEICH(AE$2;$A$1:$Z$1;0));"Gib in AC4 einen Wort ein!")

Also kurz erklärt, In AC4 gibt man den gesuchten Wortlaut an. In AE2 ist die varilable Beschriftung der zu durchsuchenden Spalte.

Nun möchte ich, dass in der ersten zu durchsuchenden Spalte (das Wort wird in AC4 angegeben) nach dem Wort auch innerhalb der Zelle gesucht wird. Eignet sich zB für Doppelnamen und man nur nach einem Suchen kann, weil der zweite im Schreiben nicht erwähnt ist. Es sollte ein Treffen mit dem vollständigen Inhalt der gefundenen Zelle ausgegeben werden.

Die darauf folgende Formel rechts nebendran ließt jetzt aus Zelle AC5 einen weiteren Wortteil heraus, welcher in der gleichen Zeile existieren muss wie der Wortteil aus AC4. Somit muss durch die Eingabe in Zelle AC5 (falls FALSCH) die Tabelle weiter durchsucht werden nach dem gleichen Prinzip.

Am Ende der Suchspalte ist dann ein variabler Hyperlink der mich direkt zur passenden Zeile führt, nachden ich bestätigen kann, dass es bei den angezeigten Angaben sich um den richtigen Datenzeilensatz handelt.

Theoretisch gelaube ich schon, dass das mit Excel möglich ist. Bloß ich weiß es einfach nicht :(

Vielen Lieben Dank Für Deine Hilfe !!!

Diese Paar Codezeilen würden mir Stunden an Arbeit in Zukunft sparen :)

...zur Frage

Die Erweiterung braucht vielleicht wirklich nur zwei *

=WENNFEHLER(INDEX($A$2:$Z$4400;VERGLEICH("*"&$AC$4&"*";$A$2:$A$4400;0);VERGLEICH(AE$2;$A$1:$Z$1;0));"Gib in AC4 einen Wort ein!")

Dann wird aber standardmäßig nach Wortteil gesucht. Entweder zwei Ausgaben der Suche mit exaktem und dann Wortteiltreffer oder zumindest eine Prüfung, ob Du noch eindeutige Ergebnisse hast:

=WENN(ZÄHLENWENN(A2:A4400;"*"&AC4&"*")>1;"Kein eindeutiger Treffer!";"")

Den Rest der Anforderungen verstehe ich vermutlich noch nicht richtig. AC5 könnte irgendwo in der Zeile stehen oder kennt man irgendwie die Spalte? Wenn das irgendwo in der Zeile auftaucht, fällt mir ad hoc nur eine Hilfsspalte ein, die man abfragen kann.

bspw. in AB

=VERGLEICH($AC$5;A1:Z1;0)

Die Logik, dass Excel dann weitersuchen soll, bekommt man mit Formeln so nicht hin. Da gibt es entweder einen Treffer, der alle Bedingungen erfüllt oder nicht.

Verstehe ich es richtig, dass es eine Suche mit zwei Parametern ist?

{=VERGLEICH("*"&AC4&"*"&AC5;A2:A4400&AB2:AB4400;0)} als Matrixformel

würde die Zeilennummer liefern für Teiltreffer AC4 und AC5 in der Zeile (wobei eben die Hilfsspalte abgefragt würde)

...zur Antwort
=UND(B$5>=SVERWEIS(B$5;Tabelle1!$E$2:$E$3;1;WAHR);B$5<=SVERWEIS(B$5;Tabelle1!$E$2:$F$3;2;WAHR))

Wenn das Tabellenblatt mit Feiertagen und Ferien nicht Tabelle1 heißt, musst Du das noch anpassen - wenn weitere Ferieneinträge kommen auch den Bereich, der bislang E2:F3 ist

Wichtig ist, dass die Ferien hinsichtlich Datum aufsteigend sortiert sind, sonst funktioniert der sverweis mit ungefährem Treffer nicht.

Alternative Formel:

=SUMMENPRODUKT((Tabelle1!$E$2:$E$2<=B$5)*(Tabelle1!$F$2:$F$2>=B$5))=1

Da sollte die Reihenfolge egal sein und wäre daher ratsamer.
Die erste Variante kam mir irgendwie zuerst in den Sinn, darum steht sie trotzdem hier.

...zur Antwort

Zellen kannst Du in zwei Weisen ansprechen:
Range("A1") oder cells(1,1). Bei cells ist zu beachten, dass erst Zeile, dann Spalte genannt wird, quasi andersrum als bei Formeln.

Eine Zelle hat diverse Eigenschaften (Schriftfarbe, Rahmen etc.) - Du möchtest den Wert verändern:

Range("A1").value=... oder cells(1,1).value=...

Um noch das Tabellenblatt zu berücksichtigen:
Sheets("Tabelle2").Range("B2").value=

Zum Rechnen:
Bei nur zwei Zellen kannst Du diese einfach zusammenzählen. Sonst gäbe es noch die Summenfunktion in VBA worksheetfunction.sum

Sheets("Tabelle2").Range("B2").value=sheets("Tabelle1").Range("B3").value+sheets("Tabelle1").Range("B4").value

sheets("Tabelle2").range("B2").value=WorksheetFunction.Sum(Sheets("Tabelle1").Range("B3:B4").Value)

...zur Antwort

Es geht um die Datenüberprüfung > Liste aka Picklist oder Dropdown, richtig?

Sind die 30 Auswahlwerte in der Tabelle irgendwo hinterlegt oder nur direkt in der Datenüberprüfung? In ersterem Fall könnte man in dieser Liste die entsprechende Formatierung hinterlegen und per VBA übertragen.


...zur Antwort

Die Frage bezieht sich sicherlich auf die vorherige, um summewenn für nicht ausgeblendete Zeilen zu ermitteln. Wenn in der Datei ohnehin ein Makro verwendet wird, dann könntest Du auch eine eigene Funktion zum Zählen verwenden (die Nachteile bzgl. Makros in der Datei hast Du ja eh)

Die Hilfsspalte entfällt damit. Die Formel aktualisiert sich allerdings nicht bei Änderungen des Filters automatisch -> F9 drücken.

Die Parameter habe ich so bezeichnet wie bei summewenn, die Funktion selbst um Irrititationen zu vermeiden aber englisch

In die Tabelle also =sumif_visible_cells(N8:N60000;"test";P8:P60000)

Den Code in ein Modul hinterlegen (Entwicklertools > VBA. Rechtsklick Einfügen > Modul)

Function Sumif_Visible_Cells(Bereich As Range, Suchkriterium As String, Summenbereich As Range)
Application.Volatile
Total = 0
For Each cell In Bereich
If cell.Rows.Hidden = False And cell.Value = Suchkriterium Then
If cell.Columns.Hidden = False Then
Total = Total + cell.Offset(0, Summenbereich.Column - Bereich.Column).Value
End If
End If
Next
Sumif_Visible_Cells = Total
End Function
...zur Antwort

Zählenwenn liefert Dir die Anzahl, Du willst aber ja eine Summe.

Das geht z.B. auf die Art, wenn Deine Tätigkeitsliste sich nur auf ein Jahr bezieht, dann reicht der Vergleich des Monats aus.

=SUMMENPRODUKT((MONAT(A6:A11)=MONAT(9))*(C6:C11))

Statt direkt die 9 für September in die Formel zu schreiben, kann man mit der richtigen Formatierung auch die Zelle in F6 (die Monatsnamen) einbeziehen. Dazu muss in F6 etc. aber statt dem Wort ein richtiges Datum stehen, also statt September 01.09.2016. Zellformatierung auf benutzerdefiniert und dort MMMM
dann wird auch September angezeigt, der Inhalt ist aber ein richtiges Datum, mit dem man rechnen kann.

Um die Formel für die anderen Monate kopieren zu können, ohne sie anpassen zu müssen, noch die Zeilen fixieren:

=SUMMENPRODUKT((MONAT(A$6:A$11)=MONAT(F6))*(C$6:C$11))

bei Du den Bereich so erweitern solltest, dass die gesamte Liste inkl. künftiger Einträge abgedeckt ist.


...zur Antwort

Trivial ist das nicht. Ich habe was gebastelt, allerdings auf Basis einer Datei, die alt, neu und das zusammengeführte Ergebnis in jeweils getrennten Tabellenblättern enthält. Das sollte grundsätzlich auch zwischen drei Exceldateien gehen, ist aber fummelig, gerade beim Ausprobieren. Ich würde es ehrlich gesagt weiterhin in einer Datei erledigen - wenn das manuelle Kopieren nicht tragfähig ist, kann man mit VBA auch die Tabelleninhalte in einer Datei zusammenkopieren bzw. über eine Datenverbindung reinziehen.

Was zumindest für mich mit meinen Kenntnissen nicht zu lösen ist, ist die Anforderung einen unterschiedlichen Inhalt auf Buchstabenebene zu markieren. Ich habe auf die Schnelle auch keine Umsetzung in VBA im Internet gefunden. Ab der ersten Abweichung mit einem Buchstaben mehr oder weniger reicht es nicht mehr aus einfach Stelle für Stelle zu vergleichen. Ich habe für einen ersten Wurf das Verfahren hier geklaut:

http://www.herber.de/forum/archiv/1260to1264/1260531_Textvergleich_mit_Markierung_der_Unterschiede.html

Die Lösung für die Formatierungen gefällt mir irgendwie noch nicht, scheint nach meinen Tests aber zumindest zu funktionieren.

Sub zusammenstellen()
Dim alt, neu, ergebnis, vergleich1, vergleich2 As String
alt = "Alt" 'name des tabellenblatts mit den alten einträgen
neu = "Neu" ' name tabblatt neue einträge
ergebnis = "Ergebnis" 'name tabblatt ergebnisse der zusammenführung
Dim i, j, k As Long
k = 1
'zunächst das tabellenblatt alt durchgehen
For i = 1 To Sheets(alt).Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Sheets(neu).Range("A:A"), Sheets(alt).Cells(i, 1).Value) = 0 Then 'wenn nicht im tabellenblatt neu gefunden
Sheets(ergebnis).Cells(k, 1).Value = Sheets(alt).Cells(i, 1).Value
Sheets(ergebnis).Cells(k, 2).Value = Sheets(alt).Cells(i, 2).Value
Sheets(ergebnis).Cells(k, 1).Font.Strikethrough = True
Sheets(ergebnis).Cells(k, 1).Font.Color = vbred
Sheets(ergebnis).Cells(k, 2).Font.Strikethrough = True
Sheets(ergebnis).Cells(k, 2).Font.Color = vbred
Else
'für die einträge aus "alt", die in "neu" enthalten sind prüfen ob der inhalt der 2. spalte auch gleich ist
For j = 1 To Sheets(neu).Cells(Rows.Count, 1).End(xlUp).Row
If Sheets(alt).Cells(i, 1).Value = Sheets(neu).Cells(j, 1).Value Then
Sheets(ergebnis).Cells(k, 1).Value = Sheets(neu).Cells(j, 1).Value
Sheets(ergebnis).Cells(k, 2).Value = Sheets(neu).Cells(j, 2).Value
If Sheets(alt).Cells(i, 2).Value = Sheets(neu).Cells(j, 2).Value Then 'wenn gleich:
Sheets(ergebnis).Cells(k, 1).Font.Color = vbBlack
Sheets(ergebnis).Cells(k, 2).Font.Color = vbBlack
Else 'wenn anderer inhalt in der 2. Spalte:
Sheets(ergebnis).Cells(k, 1).Font.Color = vbRed
Sheets(ergebnis).Cells(k, 2).Font.Color = vbRed
' hier die notdürftige lösung um die unterschiede zu markieren: http://www.herber.de/forum/archiv/1260to1264/1260531_Textvergleich_mit_Markierung_der_Unterschiede.html
If Len(Sheets(alt).Cells(i, 2).Value) > Len(Sheets(ergebnis).Cells(k, 2).Value) Then
txtlen = Len(Sheets(alt).Cells(i, 2).Value)
Else
txtlen = Len(Sheets(ergebnis).Cells(k, 2).Value)
End If
m = 1
For l = 2 To txtlen
vergleich1 = Mid(Sheets(alt).Cells(i, 2).Value, m, l)
vergleich2 = Mid(Sheets(ergebnis).Cells(k, 2).Value, m, l)
If vergleich1 = vergleich2 Then
Sheets(ergebnis).Cells(k, 2).Characters(m, l).Font.Color = vbBlack
End If
m = m + 1
Next
End If
Else
End If
Next j
End If
k = k + 1
Next i
'die neuen Einträge noch ergänzen, d.h. die nicht auf tabellenblatt "alt" stehen
For j = 1 To Sheets(neu).Cells(Rows.Count, 1).End(xlUp).Row 'tabelle "neu" durchgehen
If WorksheetFunction.CountIf(Sheets(alt).Range("A:A"), Sheets(neu).Cells(j, 1).Value) = 0 Then 'prüfen ob auf tab. "alt" vorhanden
Sheets(ergebnis).Cells(k, 1).Value = Sheets(neu).Cells(j, 1).Value
Sheets(ergebnis).Cells(k, 2).Value = Sheets(neu).Cells(j, 2).Value
Sheets(ergebnis).Cells(k, 1).Font.Color = vbRed
Sheets(ergebnis).Cells(k, 2).Font.Color = vbRed
k = k + 1
End If
Next j

End Sub
...zur Antwort