ich denke, gespeichert wird das Workbook, nicht nur das Sheet, was "fehlendes Objekt erklärt. Und heißt die Checkbox pz_status? Müsste dann sowas sein wie

if Checkboxes("pz_status") = true then Application.Activebook.save

sollte es in neueren Versionen gehen, nur Blatt oder sogar Spalte oder Zeile zu speichern, wäre das was anderes, denke aber nicht, dass es so ist.

Vllt muss es sogar heissen

Application.Checkboxes(..) oder ActiveWorkbook.Checkboxes(...)

[weiß nie, wann es ActiveWorkbook oder nur Activebook heißt.

Bei Sheet auf alle Fälle activesheet

...zur Antwort

Da du noch keine AW hast, erst mal vorläufig:

Die Adressierung von LO hat mich auch lange gefuchst: Du siehst das Prinzip, wenn du =ZELLE("Dateiname") eingibst:

'file:///C:/Verzeichnis/Unterverzeichniss(se)/Datei.Typ'#$Blatt

Diese Struktur ist erheblich komplizierter aufzulösen als bei xl, wo die Datei in [Klammern] steht, es geht aber, ich hab das für Hyperlink (zur Datei ERLEDIGE-F.xls und Blatt EINKAUF mal mit diesem Monster gemacht (kursiv ist der "freundliche Name", also die Info zur Orientierung:

=HYPERLINK(LINKS(ZELLE("Dateiname");FINDEN("|";WECHSELN(ZELLE("Dateiname");"/";"|";LÄNGE(ZELLE("Dateiname"))-LÄNGE(WECHSELN(ZELLE("Dateiname");"/";"")))))&"ERLEDIGE-F.xls'#$Einkauf";"Erledige, Längen-unabhängige Formel")

ich weiß nicht, obs da was kürzeres gibt, wollte im LO-Forum immer mal fragen, habs aber wieder aus den Augen verloren (dort sind übrigens ebenfalls sehr kompetente User, ich rate dir, dich da anzumelden, denn die sind auf OO/LO spezialisiert)

Längen-unabhängige Formel heisst, dass ein Pfad variabler Länge richtig ausgewertet wird, unabhängig auch von der Zahl der Verzeichnis-Ebenen.

Das Prinzip ist, dass der letzte Slash gegen eine Pipe | ausgewechselt und so der Beginn des Dateinamens mit FINDEN("|";... ermittelt wird bzw -anders herum- die Länge der Verzeichnisstruktur. Ich kann heute aber nicht mehr sagen, warum ich nicht gleich nach dem Beginn des Dateinamens gesucht habe.

Ich hatt auch schon die Adresse der Zelle als target eingegeben, auch das ging: Hyperlink steuerte direkt die Zelle an.

Vllt hilft dir das schon weiter, ich muss mich selbst erst wieder eindenken, frag ggf nochmals nach.

...zur Antwort

der (für mich) Einfachheit halber in einem kleineren Bereich und mit fixem Suchwort:

=SVERWEIS("total";INDIREKT(A1&"!"&"B2:E19");3;0)

(also mit weitaus weniger Gänsefüßchen) oder noch kürzer:

=SVERWEIS("total";INDIREKT(A1&"!B2:E19");3;0)

Aber besser durchschaubar ist m.E. diese Formel (sie hat auch in der Praxis noch einige weitere Vorteile):

=INDEX(INDIREKT(A1&"!D:D");VERGLEICH("total";INDIREKT(A1&"!B:B");0))

in Vergleich() hast du hier keinen SpaltenVERSATZ, sondern adressierst in Index() die Auslese-Spalte direkt ebenso wie die Suchbegriff-Spalte, also

=index(wo soll der Wert ausgelesen werden;Vergleich(was ist das Kriterium;wo soll es gesucht werden;WAHR/FALSCH))

Vergleich liefert eine ZellNr im Bereich, bei B:B ist die identisch mit der ZeilenNr.

Beide Formeln sollten aber von Blatt zu Blatt beliebig kopierbar sein, oder willst du die Ergebnisse in einer Liste auf EINEM Blatt zusammenstellen? (also eine Liste aller Total mit den entsprechenden Summen?

Dann sollte eine Liste deiner Blattnamen die Basis bilden und du kannst die Formel nach $-setzen der Zeilen des Bereichs (bei SV) nach unten kopieren. Die Index-Fo ist mit B:B bzw D:D von vornherein so angelegt, dass das nicht nötig ist: B:B etc bleiben beim nach-unten-kopieren B:B etc.

Makro zum Erstellen einer Blattliste:

Sub Blattliste_erstellen()

Dim Blatt

For Each Blatt In Worksheets

If Not IsEmpty(ActiveCell) Then MsgBox "Zielzelle(n) belegt, Abbruch": Exit Sub

ActiveCell = Blatt.Name

ActiveCell.Offset(1, 0).Activate

Next

End Sub

...zur Antwort

Du brauchst dazu erst mal eine Liste richtiger Paarungen, sei zB in S(Städte)und T(reffer) (in A deine zu zählenden Städte, in B die Flüsse):

Neben die Liste der Richtigen die Formel (meinetwegen für Zeile 3:

=Summenprodukt((A:A=S3)*(B:B=T3))

Summenprodukt wertet A und B zeilenweise aus, nur wenn beide gleichzeitig Treffer sind, wird eine 1 hochgezählt und du erhältst die Zahl der Treffer für Stadt & Fluss

runterziehen über Länge Liste Richtige.

Umgekehrt: willst du wissen, welche Kombinationen A&B in der Trefferliste stimmen, dann zB in C3: =Summenprodukt(((A3&B3)=(S:S&T:T))*1).

Da in S und T die richtige Paarung nur jeweils 1x vorkommt, ergibt richtig eine 1, falsch eine 0 (ob man das *1 plus Klammerebene auch weglassen kann, hab ich jetzt nicht ausprobiert.

Willst du zum letzteren Problem wissen, in welcher Zeile das richtige steht (weil die Liste nicht geordnet wäre), einfach Sumprod((..)*Vergleich(A3&B3;S:S&T:T;0))

Anm: Bei A:A etc kann man sich $ sparen und Vergleich beginnt mit Zeile 1 zu Zählen, liefert also direkt die Zeilennimmer

...zur Antwort

nein, das würde sonst noch schlimmer aussehen als eine Kinderzeichnung von Eisenbahngeleisen und kein Mensch würde mehr durchblicken, zu welcher Zeile oder Spalte eine Zelle gehört.

Was du aber machen kannst: Zellen verbinden, das geht sowohl horizontal wie vertikal. Dabei steht dann der Eintrag in der linken Spalte/obersten Zeile, die anderen verbundenen Zellen vermelden =istleer(Zelle) als Wahr. Zellen verbinden geht mittels eines Knopfs in der Knopf-Leiste mit einem Klick: markieren, klicken. Zweites mal klicken "entbindet" die Zellen wieder.

Du kannst aber auch über den rechten Rand (oder linken, wenn rechtsbündig) hinausschreiben, da darf allerdings keinerlei Umbruch gesetzt sein. Ein Eintrag in einer Zelle rechts daneben unterbricht die Sichtbarkeit des Eintrags.

...zur Antwort

Ohne VBA kannst du das Datum / die Uhrzeit sehr schnell manuell setzen, ohne sie schreiben zu müssen (auch weil viele Netzwerke kein VBA zulassen):

Shortcut Datum: Strg+Punkt

Shortcut Zeit: Strg+Doppelpunkt

gehen beide auch nacheinander (sinnvollerweise mit Leerzeichen dazwischen) oder einzeln in Fließtexten.

In LO etc geht dieser Shortcut nicht. (oder anders?)

...zur Antwort

Das geht meines Wissens nur mit einem Ereignis-Makro. Aber wegen der Bezüge müsste ich wissen, wie deine Formel aussieht, in welcher Spalte sie steht und ggf. welcher Eintrag das Setzen der Formel auslösen soll.

Da es sich um ein Datum zu handeln scheint, auch welches Datumsformat.

Wenn abweichend, auch für die bedingte Formatierung, aber da würde ich erst versuchen, ob nicht der Vorschlag von Subopt greift, einen größeren Bereich zu formatieren (die nicht ausdrücklich notwendigen $-Zeichen dazu entfernen!)

...zur Antwort

in N5 am einfachsten so: =SUMMENPRODUKT((A3:A99=M5)*(i3:i99+j3:j99+k3:k99))

Wichtig: die Bereiche müssen alle gleich groß sein und i:k darf im Bereich keine Texte enthalten, sonst wirds erheblich komplizierter! (ich hoffe, die - und die € sind Zellformatierungen für 0 und Währung.) Frag bei Bedarf in dieser AW nochmal nach!

...zur Antwort

soll in einem bereich alle "L" zählen würde als Zelleintrag allein schon 1 oder 5 oder 6 L, l, Ll liefern (je nachdem, ob nur groß L, nur klein l oder beide)

ich habe in J14:J17 stehen:

  • von Luft und Liebe leben
  • Grosse L
  • kleine l
  • alle L zählen

=SUMMENPRODUKT((LÄNGE(J14:J17)-LÄNGE(WECHSELN(J14:J17;"L";"")))*1) => 4

=SUMMENPRODUKT((LÄNGE(J14:J17)-LÄNGE(WECHSELN(J14:J17;"l";"")))*1) => 6

=Summenprodukt((Länge(J14:J17)-Länge(Wechseln(Klein(J14:J17);"l";"")))*1) =>10

  • Summenprodukt kann zwar selbst keine Texte verarbeiten, aber die von innen nach aussen(Klammerebenen) generierten Zahlen schon.
  • Wechseln unterscheidet GROSS/klein, aber durch den Trick, nicht die Zelle selbst, sondern Klein(Zelle) zur Verarbeitung einzustellen, geht auch das gleichzeitige Wechseln beider.
  • Da L bzw l gegen Nichts ausgewechselt werden, verringert sich die Länge entsprechend der Zahl der L/l. Die Differenz ist also das genaue Maß für die Zahl der L/l.
...zur Antwort

ist ja lange her, aber vllt ist noch der Weg ohne VBA interessant:

Arbeite mit Bearbeitungszeile. Schreib in eine Zelle (zB H1) =heute(). Klick das vorbereitete Textfeld an. Schreib in die Bearbeitungszeile des Textfelds =H1.

dann wird der Wert aus H1 ins Textfeld übernommen (auch bei anderen Einträgen)

Diese Methode funktioniert NICHT in Libre Office, leider (und ggf anderen).

Es gibt in xl aber auch einen Shortcut fürs heutige Datum: Strg+Punkt.

Und für die Zeit: Strg+:

Beide können auch mitten in einem Fließtext verwendet und am besten mit mit Leerzeichen dazwischen nacheinander gesetzt werden.

funktioniert ebenfalls NICHT in Libre Office

...zur Antwort

Du willst doch sicher für jede einzelne Zelle in beiden Bereichen wissen, ob sie leer sind, du fragst aber VBA, ob der gesamte Bereich leer ist. (was mit isempty gar nicht geht, das wertet nur Einzelzellen aus). VBA ist zwar sehr mächtig, aber auch sehr empfindlich gegen falsche Formulierungen (Syntax). Mach es so, wie ich es in der AW zu deiner vorhergehenden Frage beschrieben habe, dann sollte es gehen!

...zur Antwort

wenn ich das richtig verstehe: in Spalte K ab K9 sei die Klasse, in Spalte M ab M9 die Marke. Keine Doppelnennungen. In K1 sei optional der Eintrag Audi ODER in M1 a4

=wenn(istleer(K1);index(K9:K99;Vergleich(M1;M9:M99;0));"") &wenn(istleer(M1);index(M1:M99;Vergleich(K1:K9:K99;0));"")

Zur Erklärung: Bei leerem K1 suchst du die Klasse und in M1 ist die Marke gegeben. Vergleich sucht nun in M9:M99 nach der Übereinstimmung und gibt die Zell-Nummer des Bereichs wieder (ist Zeilennummer -8, da M9 die erste Zelle des Suchbereichs ist, aber das brauchst du gar nicht zu wissen, wenn nur beide Bereiche gleich anfangen). Die 0 im Vergleich bedeutet: genaue Übereinstimmung, -Eselsbrücke: 0 Abweichung-, Bei 1 würdest du vllt bei Austin- oder bei AlfaRomeo-Klassen landen)

Die von Vergleich gefundene Zellnummer wird nun im Bereich von Index gewählt und der Inhalt wiedergegeben: a4

Index(...;Vergleich(...)) funktioniert von links nach rechts und von rechts nach links, der Spaltenversatz des SV wird überflüssig, weil die Spalten ja anderweitig definiert sind (und du auch sofort siehst, wie!) und du kannst die Bereiche oder sogar ganze Spalten versetzen: alles bleibt richtig. Ich weiß nicht, warum der SVerweis immer noch so hoch gehandelt wird, wahrscheinlich nur aus Bequemlichkeit der Curricula-Schreiber.

Ach so: andersrum geht die ganze Erklärung natürlich vice versa analog.

Die Formeln kannst du hinsetzen, wohin du willst, nur nicht in K9:K99 und auch nicht in M9:M99, sonst gäbs Zirkelbezüge. Ist keine der beiden Angabezellen gefüllt (also beide leer), ist das Ergebnis =""&"", also ebenfalls leer. Hast du ungelistete Marken- oder Typangaben, sollte der Fehler #NV erscheinen (auch bei Schreibfehlern)

...zur Antwort

Bin zwar auch ein Fän von For Each...next, aber es geht auch mit einer leichter verständlichen For 1 to ...-Schleife, und zwar so (sofern deine Formel ok ist, hab zwar IIf schon gesehen, ist mir aber nicht geläufig):

  • Sub VarZ1_20()
  • Dim Z as Integer
  • For Z = 1 to 20
  • Worksheets("Tabelle1").Range("C"&Z) = IIf((IsEmpty(Range("A"&Z)) + IsEmpty(Range("B"&Z))) <> 0, "", (Range("A"&Z) - Range("B"&Z) + 1))
  • next
  • End Sub

kannst du hier kopieren (die dicken Aufzählungspunkte werden von VBA ignoriert)

...zur Antwort

ich würde hier nicht den SVerweis nehmen, sondern:

=6-VERGLEICH(A3;{0;27;33;40;46;53};1) oder =6-VERGLEICH(A3;D4:D8;1)

Das geht allerdings nur mit ganzzahligen Noten-Abstufungen. Die {Zahlenfolge} kannst du auch in eine xl-Liste schreiben und dich darauf beziehen (2.Formel).

Ich gehe davon aus, dass das Wort " Punkte" durch Benutzerdefinierte Zellformatierung erzeugt wurde und nicht als Text zusätzlich zur Zahl in den Zellen steht, sonst musst du entweder auch nach "53 Punkte" oder einfacher 53* suchen (Verwendung von Wildcards [? oder *] oder es wird kompliziert.

Willst du mehr wissen, frag als Kommentar in DIESER Antwort, damit ich das sehe.

Und wenn's unbedingt der SVerweis sein muss, ebenfalls. Ich hätte allerdings auch noch weitere Alternativen zum SVerweis, auch für gestückelte Noten (zB Drittelnoten)

Das Beispiel zeigt wieder mal, dass man sich schon beim Anlegen einer Liste Gedanken machen sollte, wie man sie später auswerten will.

...zur Antwort

Da ich die Frage ganz anders verstehe als alle anderen, mein Vorschlag:

=Summenprodukt((A2:A20>=3)*(A2:A20<=8)) liefert die Anzahl aller Zahlen im Bereich A2:A20, die zwischen incl.2 und incl. 8 liegen.

=Summenprodukt((A2:A20>=3)*(A2:A20<=8)*A2:A20) liefert die Summe dieser oben gezählten Zahlen

In eine Zelle "3-8" zu schreiben, ist sehr unpraktisch, da du dann eine Textauflösung bräuchtest (wäre möglich, aber langatmig). Schreibst du dagegen die Grenzen in eine Min- und eine Max-Zelle, kannst du dich direkt darauf beziehen: also Min sei A1, Max sei B1, dann

=Summenprodukt((A2:A20>=A1)*(A2:A20<=B1)) oder analog mit der Summe

Würde mich interessieren, wie die Frage gemeint war bzw wessen Antwort hilft!

...zur Antwort

Inhaltlich möchte ich den anderen AW nichts hinzufügen. Aber ist OO wieder besser geworden oder warum haben so viele OO und nicht Libre Office, das -zumindest lange Jahre- um Größenordnungen besser war, weil ständig aktuell upgedated? (und ebenfalls kostenlos)

...zur Antwort

Prinzipiell kannst du mit B1: =TEIL(A1;FINDEN("AA";A1;1);8) das erste Auftreten einer solchen Nummer rausschreiben. Runterkopieren.

Wie du eine zweite solche Nummer extrahieren kannst, muss ich noch überlegen (aber erst heut nacht wieder, hab aber schon eine vage Idee!)

...zur Antwort

für vielerlei Optionen:

=WAHL(VERGLEICH(A1;{0;51;101};1);"Wort A";"Wort B";"Wort C")

ist auch für negative Zahlen brauchbar:

=WAHL(VERGLEICH(A1;{-3001;-201;0;501;5001};1);"hohe Schulden ";"Schulden ";"Taschengeld ";"Guthaben ";"lukrativer Kunde ")

ich glaube mich zu erinnern, dass bei Wahl in den neueren xl-Versionen (ab 2010?) über 200 Argumente (Abstufungen) möglich wären, aber da verwendet man dann ohnehin Listen und die Index-Formel:

=INDEX({"hohe Schulden ";"Schulden ";"Taschengeld ";"Guthaben ";"lukrativer Kunde "};(VERGLEICH(A2;{-3000;-200;0;501;5001};1)))

Index- und Vergleich-Matrix können hier auch Bezugslisten sein.

...zur Antwort

Setz mal ein ' oder " davor, das hilft normalerweise. Oder formatiere die Zelle VORHER auf Text (Zellen formatieren, Zahlen, Benutzerdefiniert, Text , am besten gleich einen größeren Bereich oder die ganze Spalte). (hab allerdings nicht OO, sondern andere Tabcalcs.)

...zur Antwort

in A1: =HYPERLINK(B1;"inhaltliche Beschreibung") (zumindest, wenn es sich um einen inet-Link handelt. Oder willst du eine xl-Datei öffnen? oder eine Datei samt zugehöriger Anwendung im Ordner-/Dasteisystem? dann frag nochmal zurück , und zwar in dieser AW, damit ich es bemerke)

die inhaltliche Beschreibung heißt auch "freundlicher Text", das ist das, was du im Blatt lesen kannst.

...zur Antwort