🚨 Das LibreOffice Forum braucht jetzt Ihre Hilfe! 🚨
🙏 Spenden Sie heute 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: 2692
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: 230
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: 2692
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 und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten