Funkcja dolnego i gornego indeksu

Użytkowanie arkusza kalkulacyjnego
Awatar użytkownika
Samson
Posty: 38
Rejestracja: wt cze 14, 2011 5:31 pm
Lokalizacja: Poprad

Funkcja dolnego i gornego indeksu

Post autor: Samson »

Dzień dobry
chciałbym się zapytać czy da się w Calcu napisać funkcję, która będzie kopiowała zawartość komórki do innej ale zachowując przy tym formatowanie
np w komórce A1 mam tekst zawierający dolne i górne
3 indeksy, a ja chce go skopiować do komórki A3 (ale poprzez funkcję =funkcja(A1) ) tak aby zostało zachowane formatowanie (głównie chodzi mi o indeksy).
Z góry dziękuję za odpowiedź
OpenOffice 4.1 na Windows 7 Pro
Libre Office 4.2 na Windows 7 Pro
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Funkcja dolnego i gornego indeksu

Post autor: Jan_J »

Takiej funkcji nie ma.

Problem polega na tym, że funkcje wywoływane w formułach nie otrzymują adresów komórek z argumentami, tylko wartości tychże już pobranych argumentów. Jest to logiczne, bo spodziewamy się, że =blabla(A1) jest równie sensowne jak =blabla(12) albo nawet =blabla(A1 + A2 + 3). Wobec tego funkcja, która jest wywoływana z argumentem A1 nie "wie", że jest to adres komórki, tylko dostaje daną (niesformatowaną liczbę albo niesformatowany tekst) z tej komórki. Funkcja, która działa inaczej, nawet w teorii nie jest możliwa, chyba że operuje jawnie podanym adresem komórki jako argumentem. W przypadku funkcji indirect() adres taki ma postać tekstu; w przypadku cytowanym niżej funkcje pobierające styl z wskazanej komórki mają nagłówek postaci (sheet; row; column).

W https://forum.openoffice.org/en/forum/v ... =9&t=33475 masz dyskusję na podobny temat, z odesłaniem do https://forum.openoffice.org/en/forum/v ... =21&t=2762, gdzie @Villeroy umieścił kod własnych funkcji robiących m.in. podobne rzeczy. Z tym, że jak rozumiem, zachowują one styl komórki, nawet robiony ręcznie, ale nie widzę w kodzie odwołań do formatowania zawartości tekstowej.

Najprościej byłoby użyć schematu znanego ze skrótu Ctrl+C / Ctrl+V, czyli w Calcu pary wywołań "uno:Copy" i "uno:Paste". Wywołanie takiej procedury z funkcji jest łatwe. Problemem -- jak rzeknięto wyżej -- będzie zaprojektowanie parametrów funkcji kopiującej. Musi ona znać adresy i komórki źródłowej, i komórki docelowej. I trzeba je przekazać w formie argumentów, bo środowisko takich danych do funkcji nie przekazuje.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ