Claus Busch <
claus...@t-online.de> wrote:
>> Ich möchte die Zeitangaben aber /zentriert/ (bezogen auf
>> zweistellige Stundenzahlen) darstellen.
> das funktioniert mit Zeiten so nicht.
> Du musst entweder die Zeiten hh:mm formatieren und dich mit der
> führenden Null abfinden oder eine Monospace-Schriftart verwenden
> (Schriftart gleicher Breite).
Da Ziffern in den meisten Schriftarten die gleiche Breite
haben, war ich davon ausgegangen, dass das kein Problem dar-
stellt.
> Eine andere Möglichkeit wäre, die Zeiten mit dem Format
> ?0":"0?
> immer vierstellig einzugeben, z.B.:
> 0030, 2400 usw.
Ich habe jetzt eine Lösung gefunden: Das Unicode-Leerzeichen
„U+2007 FIGURE SPACE“ erzeugt eine Breite, die der von Zif-
fern entspricht. Damit kann ich den Bereich derart formatie-
ren, dass in dem Normalfall ein solches Leerzeichen dem For-
mat vorangestellt wird, und dann eine bedingte Formatierung
darüberlegen, die für Zellenwerte >= 10 h dieses Leerzeichen
weglässt.
Diese Lösung funktioniert nicht für alle denkbaren Eingaben,
aber meinen Anwendungsfall deckt sie ab.
In Office-JS sieht das dann testweise so aus:
| const range = sheet.getRange('A1:A10');
| range.values = [[0], [.1], [.2], [.3], [.4], [.5], [.6], [.7], [.8], [.9]];
| range.numberFormat = Array(10).fill(['\u2007[h]:mm']);
| range.conditionalFormats.clearAll();
| const cf = range.conditionalFormats.add(Excel.ConditionalFormatType.cellValue);
| cf.cellValue.format.numberFormat = '[h]:mm';
| cf.cellValue.rule = { formula1: "=TIME(10,0,0)", operator: "GreaterThanOrEqual" };
und sollte sich prinzipiell auch interaktiv verwenden las-
sen.
Danke für die Inspirationen,
Tim