Nazwa bieżącego pliku w arkuszu kalkulacyjnym

Artykuł wyjaśnia, w jaki sposób umieścić w komórce arkusza kalkulacyjnego nazwę aktualnie modyfikowanego pliku. Opisuje także wybrane funkcje tekstowe.

Podstawą naszej pracy jest funkcja KOMÓRKA, za pomocą której możemy poznać wybrane właściwości komórki. Wśród nich znajduje się nazwa pliku. Wystarczy podać jako argument nazwę cechy (w języku angielskim), która nas interesuje; w naszym wypadku jest to filename. Odpowiednia formuła wygląda następująco:

=KOMÓRKA("filename")

Niestety, zwrócona wartość daleka jest od oczekiwanej. Funkcja wyświetla bowiem nie tylko pełną ścieżkę do pliku (w standardowym formacie), ale także nazwę bieżącego arkusza. Naszym pierwszym zadaniem jest więc usunięcie tego drugiego, całkowicie zbędnego elementu.

Okno arkusza kalkulacyjnego. W komórce A1 wpisano formułę opisaną wcześniej w tekście.

W tym celu wykorzystamy funkcję FRAGMENT.TEKSTU, która zwraca X kolejnych znaków z tekstu. Pierwszym argumentem jest ciąg znaków, na którym ma pracować; drugim — numer znaku, od którego ma zacząć (licząc od lewej strony); trzecim zaś długość oczekiwanego fragmentu.

Bez trudu określimy dwie pierwsze wartości. Tylko ile dokładnie znaków chcemy wyciąć, skoro ścieżki mają różną długość?

Z pomocą przychodzi nam funkcja ZNAJDŹ, która zwraca pozycję ciągu znaków (pierwszy argument) w tekście podanym jako drugi argument. Pozwoli nam ona określić miejsce występowania dwuznaku '#, który bezpośrednio poprzedza nazwę arkusza. Otrzymaną wartość będziemy musieli następnie zmniejszyć o jeden, ponieważ sam apostrof nie jest nam potrzebny.

Formuła zwracająca samą ścieżkę do pliku wygląda następująco:

=FRAGMENT.TEKSTU(A1;1;ZNAJDŹ("'#";A1)-1)

W ten sposób możemy od razu pozbyć się ciągu file://. Wystarczy rozpocząć wycinanie fragmentu tekstu od dziewiątego znaku. Pamiętajmy jednak, że funkcja ZNAJDŹ zwraca pozycję licząc od pierwszego znaku, więc wynik jej działania także musimy zmniejszyć o dziewięć.

Okno arkusza kalkulacyjnego. W komórce A2 wpisano opisaną wyżej formułę.

Wydzielenie ostatniego komponentu ścieżki

W tym momencie w komórce A2 powinna znajdować się ścieżka do aktualnie edytowanego pliku. Naszym kolejnym celem jest wyodrębnienie ostatniego jej komponentu, czyli nazwy skoroszytu.

Niestety, Calc nie ułatwia nam tego zadania. Nie istnieje żaden działający od końca tekstu odpowiednik funkcji ZNAJDŹ. Bez użycia makra nie możemy także odwrócić ciągu znaków (wtedy nazwa pliku znalazłaby się na początku tekstu, co znacznie uprościłoby jej wycięcie).

Dlatego problem ten musimy rozwiązać naokoło.

Poniżej opisano tylko jeden ze sposobów na rozwiązanie tego problemu. Inne zostały opisane w artykule o wyodrębnianiu ostatniego komponentu z ciągu znaków.

Wpierw zamienimy ostatni ukośnik na niepowtarzalny ciąg znaków. Następnie zlokalizujemy go, a tym samym poznamy pozycję ostatniego ukośnika. Odejmiemy ją od liczby oznaczającej długość całej ścieżki i dowiemy się, ile znaków liczy sobie sama nazwa pliku. Jest to wystarczająca informacja, aby ją wyodrębnić.

Wykorzystamy do tego funkcje DŁ, PRAWY i PODSTAW.

Pierwsza z nich zwraca po prostu liczbę znaków w tekście podanym jako argument.

Druga zwraca określoną liczbę znaków (drugi argument) z końca tekstu podanego jako pierwszy argument.

Ostatnia jest trochę bardziej skomplikowana. Jej pierwszym argumentem jest ciąg znaków, na którym ma pracować. Drugim jest fragment, który ma zostać wyszukany, trzecim zaś — tekst, którym ma on być zastąpiony. Ostatni, opcjonalny argument określa, które wystąpienie poszukiwanego ciągu ma zostać zastąpione.

Za pomocą poniższej formuły poznamy długość naszej ścieżki bez ukośników. Jeżeli teraz liczbę tę odejmiemy od liczby reprezentującej długość pełnej ścieżki, dowiemy się, ile dokładnie ukośników ona zawiera.

=DŁ(PODSTAW(A2;"/";""))

Ponownie wykorzystując funkcję PODSTAW, ale tym razem z jej opcjonalnym argumentem, możemy zastąpić ostatnie wystąpienie ukośnika jakimś unikatowym ciągiem znaków. Osobiście wykorzystam trzy małpy, chociaż nada się każdy ciąg, który nie powinien naturalnie pojawić się w nazwie pliku lub katalogu.

Odpowiednia formuła wygląda następująco:

=PODSTAW(A2;"/";"@@@";DŁ(A2) - DŁ(PODSTAW(A2;"/";"")))

Zwraca ona ścieżkę z trzema małpami w miejscu ostatniego ukośnika. Nie jest to informacja nam potrzebna, ale możemy ją potraktować jako argument dla funkcji ZNAJDŹ. Wyszukując w takim tekście trzech małp, uzyskamy pozycję ostatniego ukośnika w tekście. Gotowa formuła znajduje się poniżej.

=ZNAJDŹ("@@@";PODSTAW(A2;"/";"@@@";DŁ(A2) - DŁ(PODSTAW(A2;"/";""))))

Odejmując uzyskaną wartość od długości całej ścieżki dowiemy się, ile znaków liczy sama nazwa pliku. Tę informację z kolei możemy przekazać do funkcji PRAWY.

Ostatecznie nasza formuła wygląda następująco:

=PRAWY(A2;DŁ(A2)-ZNAJDŹ("@@@";PODSTAW(A2;"/";"@@@";DŁ(A2) - DŁ(PODSTAW(A2;"/";"")))))

Okno arkusza kalkulacyjnego. W komórce A3 wpisano powyższą formułę.

Czyszczenie arkusza

Udało nam się uzyskać oczekiwaną informację, jednak potrzebowaliśmy do tego aż trzech komórek. Następnym krokiem jest oczyszczenie arkusza ze zbędnych z nich.

Procedura jest bardzo prosta — wystarczy zastąpić adresy komórek formułami, które się w nich znajdują.

W ten sposób formuła wcześniej znajdująca się w komórce A2 uzyskuje treść:

=FRAGMENT.TEKSTU(KOMÓRKA("FILENAME");1;ZNAJDŹ("'#";KOMÓRKA("FILENAME"))-1)

Następnym krokiem jest zastąpienie nią wszystkich odwołań do komórki A2. Uzyskana formuła nie będzie szczególnie czytelna, ale pozwala uzyskać nazwę pliku wykorzystując zaledwie jedną komórkę.

=PRAWY(FRAGMENT.TEKSTU(KOMÓRKA("FILENAME");1;ZNAJDŹ("'#";KOMÓRKA("FILENAME"))-1);DŁ(FRAGMENT.TEKSTU(KOMÓRKA("FILENAME");1;ZNAJDŹ("'#";KOMÓRKA("FILENAME"))-1))-ZNAJDŹ("@@@";PODSTAW(FRAGMENT.TEKSTU(KOMÓRKA("FILENAME");1;ZNAJDŹ("'#";KOMÓRKA("FILENAME"))-1);"/";"@@@";DŁ(FRAGMENT.TEKSTU(KOMÓRKA("FILENAME");1;ZNAJDŹ("'#";KOMÓRKA("FILENAME"))-1)) - DŁ(PODSTAW(FRAGMENT.TEKSTU(KOMÓRKA("FILENAME");1;ZNAJDŹ("'#";KOMÓRKA("FILENAME"))-1);"/";"")))))

Okno arkusza kalkulacyjnego. W komórce A1 wpisano podaną wyżej, bardzo długą formułę.

Podobał Ci się ten artykuł? Zapisz się na listę subskrybentów i otrzymuj informacje o następnych

Komentarzy: 4

Dodaj komentarz