🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

Ersetzen: Zahl normal - Zahl tiefgestellt

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2712
Registriert: Fr 10. Dez 2010, 10:01

Re: Ersetzen: Zahl normal - Zahl tiefgestellt

Beitrag von karolus » So 15. Mär 2026, 14:56

Hallo

Code: Alles auswählen

import re
from com.sun.star.sheet.CellFlags import STRING

rex = re.compile(r'\d')

def repl( s ):
    return f'{int(s.group(0))+8320:c}'

def subcodes(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.CurrentSelection
    for cell in sel.queryContentCells( STRING ).Cells:
        cell.String = rex.sub( repl, cell.String)
oder besser gleich per »str.translate«

Code: Alles auswählen

from com.sun.star.sheet.CellFlags import STRING

subs = ''.join(f'{n:c}' for n in range(8320, 8330))
subtable = str.maketrans('0123456789',  subs)


def subcodes(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.CurrentSelection
    for cell in sel.queryContentCells( STRING ).Cells:
        cell.String = cell.String.translate(subtable)
Zuletzt geändert von karolus am So 15. Mär 2026, 15:31, insgesamt 2-mal geändert.
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Benutzeravatar
RPP63
Beiträge: 233
Registriert: Sa 21. Apr 2018, 09:33

Re: Ersetzen: Zahl normal - Zahl tiefgestellt

Beitrag von RPP63 » So 15. Mär 2026, 14:57

Moin!
Aus Interesse habe ich mal VBA-Makros geschrieben, als xlsm gespeichert und sie in Calc "übersetzen" lassen.
Funktioniert! :P

Ziffern per Unizeichen tiefstellen:

Code: Alles auswählen

Option VBASupport 1
Option Explicit

Sub Chem()
Dim Cell As Range, i As Byte
If TypeName(Selection) = "Range" Then
  For Each Cell In Selection
    For i = 1 To Len(Cell.Text)
      With Cell.Characters(i, 1)
        If IsNumeric(.Text) Then .Text = ChrW(.Text + 8320)
      End With
    Next
  Next
End If
End Sub
Wieder retour:

Code: Alles auswählen

Sub UnChem()
Dim Cell As Range, i As Byte
If TypeName(Selection) = "Range" Then
  For Each Cell In Selection
    For i = 1 To Len(Cell.Text)
      With Cell.Characters(i, 1)
        If AscW(.Text) > 8319 And AscW(.Text) < 8330 Then .Text = AscW(.Text) - 8320
      End With
    Next
  Next
End If
End Sub
Ein Feedback auf eine gegebene Lösung tut nicht weh und zeigt Querlesern, dass das Problem gelöst ist.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2712
Registriert: Fr 10. Dez 2010, 10:01

Re: Ersetzen: Zahl normal - Zahl tiefgestellt

Beitrag von karolus » So 15. Mär 2026, 15:57

plus Rückwandlung von tiefgestellten Ziffern zu normalen Ziffern:

Code: Alles auswählen

from com.sun.star.sheet.CellFlags import STRING

subs = ''.join(f'{n:c}' for n in range(8320,8330))
subtable = str.maketrans('0123456789', subs)
asciitable = {v: k for k, v in subtable.items()}


def subcodes(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.CurrentSelection
    for cell in sel.queryContentCells( STRING ).Cells:
        cell.String = cell.String.translate(subtable)

def undo_subcodes(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.CurrentSelection
    for cell in sel.queryContentCells( STRING ).Cells:
        cell.String = cell.String.translate(asciitable)
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten