[Excel 2007] Formatowanie wewnątrz funkcji


(hoobert) #1

Witam, mam problem dotyczący ustawienia indeksu górnego w funkcji Excela, łączącego kilka komórek.

Mianowicie sytuacja wygląda następująco:

29098688.png

Połączenie kilku komórek, widoczne w komórce A5 wygląda tak:

79993371.png

Chciałbym, aby ta jedynka na końcu oznaczona była jako indeks górny.

Czy jest możliwe ustawienie takiego formatowania cząstkowego dla komórki A5, aby można było ustawić indeks górny, w momencie gdy wykorzystuję funkcję łączącą kilka komórek?

Z góry dziękuję za odpowiedź.

Pozdrawiam, hoobert.


(Kris401) #2

Nie sądzę (oczywiście mogę się mylić) aby istniała taka możliwość. Jednym ze sposobów jaki mi przychodzi "sztucznego rozwiązania" jest scalenie komórek a5-c5 wyjustowanie tekstu do prawej i w komórce d5 wyjustowanej do lewej wstawienie indeksu.


(Drobok) #3

Imo dało by rade zrobić funkcję w vba, która mogła by robić index górny. Ale musiałbyś wymyślić jakiś parametr wg którego byłaby ona wykonywana. Np wyszukując nawiasu i dodając robiąc index w daną stronę wszystkim cyfrom będzie działało tylko w określonych przypadkach.


(Tomek Matz) #4

Napisałem taki kod procedury:

Sub MyText()

Range("C1").Value2 = Range("A1") & " = " & Range("B1").Value2 & _

                     " " & Range("A2") & " = " & Range("B2").Value2 & _

                     " " & "1)"


Dim lastIndex As Long

lastIndex = InStrRev(Range("C1").Value2, " ")


Range("C1").Characters(lastIndex + 1, Len(Range("C1").Value2) - lastIndex).Font.Superscript = True

End Sub

On wykonuje to co potrzebujesz. Problem w tym, że to jest mało elastyczne rozwiązanie, ale prawdopodobnie jedyne możliwe.

@drobok

Mi niestety nie udało się takiej funkcji zrobić. Jakbyś miał chwilę to pokombinuj, bo chętnie zobaczę przykładowe rozwiązanie.

Wydaje mi się, że nie jest możliwe napisanie takiej funkcji, bo wartość komórki musi być przypisana przed rozpoczęciem formatowania sposobu wyświetlania tej wartości. Funkcja zwraca przecież wartość dopiero po jej zakończeniu, a w obrębie funkcji przypisania wartości nie można zrobić, bo pojawi się błąd mówiący o odwołaniu cyklicznym.


(hoobert) #5

dzięki matzu, ta procedura dała taki efekt jaki mnie interesował.