Moje doświadczenia z Excelem, Accesem i programowaniem w VBA

Wpisy z tagiem: Funkcje tekstowe

poniedziałek, 22 lutego 2016

Każdemu pewnie się zdarzyło, że wprowadzając do komórki Excela ciąg cyfr będący nie liczbą tylko tekstem - został "poprawiony" przez komputer. Często nawet wtedy, gdy komórka jest sformatowana jako Tekst.
Widać to dobrze,gdy w sąsiednich komórkach mamy przewagę liczb, a do jednej z komórek wprowadzamy ciąg cyfr np. 012345678. W większości przypadków - Excel od razu po zatwierdzeniu poprawi to na liczbę 12345678. Czasem nawet zero na początku nie jest potrzebne, a ciąg np.12345000 może nagle zmienić się na  postać typu 1,2345E+7.

Co zrobić w takich przypadkach, gdy jednak chcemy widzieć tam tekst? Sprawa jest banalnie prosta: na początku wystarczy wstawić znak ' - apostrof górny. To oznaczenie, że w tej komórce jest tekst i żadna korekta nie zostanie wprowadzona.


 



 


 

Kurs Excel w praktyce>

wtorek, 22 września 2015

Funkcja VBA Trim jest funkcją tekstową usuwającą z argumentu wejściowego (typu String) zbędne spacje.  Jako spacje "prawidłowe" uznawane są tylko pojedyncze spacje pomiędzy poszczególnymi wyrazami ciągu tekstowego.

Funkcja Trim w kodzie VBA występuje w kilku różnych wariantach:

Trim - likwiduje spacje na początku i na końcu ciągu

RTrim - likwiduje spacje na końcu ciągu

LTrim - likwiduje spacje na początku ciągu

WorksheetFunction.Trim - likwiduje spacje na początku, końcu oraz ciąg kilku spacji wewnątrz. Jest odpowiednikiem funkcji Excela Usuń.Zbędne.Odstępy.

 



 


 

Kurs Excel programowanie w VBA>

sobota, 19 września 2015

Funkcja Usuń.Zbędne.Odstępy należy do funkcji tekstowych Excela. Działanie jej polega na usunięciu z argumentu wejściowego Tekst wszystkich niepotrzebnych spacji: na początku lub na końcu, kilku spacji obok siebie itp. Pozostawia tylko pojedyncze spacje oddzielające słowa w tekście.
Standardowo argumentem funkcji powinna być wartość typu tekstowego. inny typ danych wejściowych powoduje otrzymanie w wyniku jej działania wartości tekstowej odpowiadającej argumentowi. Wartość funkcji jest również typu tekstowego.

Odpowiednikiem funkcji w kodzie VBA jest funkcja Trim.

 

 


 


 

Kurs Excel 2010 esencja>

piątek, 08 czerwca 2012

W komentarzu pod jedną z notek znalazło się pytanie - jak odczytać katalog o jedno piętro wyżej niż lokalizacja aktywnego skoroszytu. Jest to tylko pewna modyfikacja funkcji opisanej tu:

VBA - ścieżka dostępu

Poszczególne katalogi w ścieżce dostępu są oddzielane znakiem "\" - więc wystarczy sprawdzić, na którym miejscu jest ostatni znak i pobrać z nazwy  liczbę znaków o 1 mniejszą.
Można zrobić to za pomocą kilkakrotnego użycia funkcji Instr, a można też przeszukiwać każdy znak za pomocą funkcji Mid.
Na przykład tak:

Private Function Nazwa_Katalogu() As String

Dim i As Integer
Dim Długosc As Integer
Dim Katalog As String
Dim k As Integer
Dim Znak As String

Katalog=ActiveWorkbook.Path
Dlugosc=Len(Katalog)
k=0

For i=1 to Dlugosc
     Znak=Mid(Katalog,i,1)
     If Znak="\" Then k=i

Next i

Nazwa_Katalogu=Left(Katalog,(k-1))

End Function

 Funkcja ta zwraca ścieżkę dostępu do katalogu o piętro wyżej niż ten, w którym znajduje się aktywny akoroszyt.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

 

 


czwartek, 31 maja 2012

Pracując w skoroszycie Excela, zapisując go od czasu do czasu (dobry nawyk - wie o tym każdy, kto kiedyś stracił efekty swojej pracy), na ogół rzadko się zastanawiamy nad tym, gdzie dokładnie plik został zapisany. Szczególnie jeżeli defaultowe ustawienie jest standardowe, zapisane gdzieś tam w podfolderze podfoldera dokumentów profilu osobistego.
Problem pojawia się w sytuacji, gdy potrzebna jest pełna nazwa pliku - ścieżka dostępu oraz nazwa z rozszerzeniem.

Bezpośrednio w Excelu możemy ją zobaczyć korzystając z formantu Moja lokalizacja na pasku narzędzi. Nie należy on jednak do ustawień standardowych, trzeba dołożyć go samemu. Opis jak to zrobić, właśnie na przykładzie formantu Moja lokalizacja opisałam tu:

Pasek szybkiego dostępu

Z poziomu kodu VBA - wystarczy stworzyć funkcję wykorzystującą ActiveWorkbook.Path oraz ActiveWorkbook.Name.
Na przykład tak:

Private Function Pelna_Nazwa_Pliku() As String

Dim Nazwa_Pliku As String

Dim Sciezka_Dostepu As String

Nazwa_Pliku=ActiveWorkbook.Name

Sciezka_Dostepu=ActiveWorkbook.Path

Pełna_Nazwa_Pliku=Sciezka_Dostepu & "\" & Nazwa_Pliku

End Function

 

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

 

 


środa, 19 maja 2010

Kilka dni temu zostałam poproszona o szybkie porównanie zawartości dwóch prostych plików. Zrobiłam to, ale żeby tym, których to dotyczyło nie umknęło, a pozostałych być może zainspirowało - pokażę rozwiązanie, które przyjęłam.

Dla uproszczenia przykładu - załóżmy, że mamy jeden plik Excela, w którym jest arkusz Spis1 zawierający spis telefonów i ich właścicieli (spis zupełnie wymyślony, wszystkie dane wymyślone i przypadkowe). Oprócz tego - jest też arkusz Spis2 - prawie identyczny.

 porównanie plików

Jak wszędzie jednak to "prawie" może stanowić wielką różnicę. Jak odnaleźć wiersze, w których występują różne dane? Jednym z prostszych sposobów może być wstawienie w jedną z kolumn w obydwu arkusza funkcji Złącz.Teksty.
Dla komórki C2 formuła będzie wyglądać tak:
=ZŁĄCZ.TEKSTY(A2;B2)
W kolejnych wierszach - analogicznie. Następnie w kolejnej w kolumnie wstawiamy formułę porównujące odpowiednie ciągi.
Komórka D2 w arkuszu SPIS2:
=JEŻELI(C2=spis2!C2;"";"różnica")
Formuła ta oznacza, że jeżeli komórka C2 jest równa komórce C2 w arkuszu SPIS2 - to zostaw puste miejsce (wyznaczane przez podwójny cudzysłów), jeżeli nie są równe - to wpisz "róznica".
Dodatkowo zastosowałam tu także formatowanie warunkowe, uzależnione od wartości wiersza w kolumnie D.
Efekt końcowy wygląda tak:

porównanie plików

W tym przypadku - ponieważ porównujemy tylko dwie kolumny (A i B) - można zastosować także prostszą funkcję, porównującą poszczególne komórki:
=JEŻELI(ORAZ(A2=spis2!A2;B2=spis2!B2);"";"różnica")
Jeżeli jednak w każdym z wierszy jest więcej kolumn - formuła może okazać się zbyt długa. Wtedy zdecydowanie lepiej wykorzystąc pierwszy sposób. Warto też pamiętać o tym, że jeżeli takie porównanie ma zostać na dłużej - to może lepiej ukryć te kolumny? Taki złączony tekst wygląda mało estetycznie.

A dla przypomnienia - linki do notek omawiających funkcje wykorzystane w przykładzie:
Jeżeli
Oraz
Złącz.Teksty

Formatowanie warunkowe

piątek, 14 maja 2010

Excel ma swoją funkcję Złącz.Teksty. Jej odpowiednikiem w kodzie VBA jest znak &, za pomocą którego łączymy kilka tekstów w jeden ciąg.
:Przykładowy zapis moze wyglądać tak:

Public Function FunkcjaLaczeTeksty(Tekst1, Tekst2) As String

FunkcjaLaczeTeksty = Tekst1 & "-" & Tekst2

End Function

Wartością funkcji jest w tym przypadku ciąg składający się wartości zmiennej Tekst1 i Tekst2 przedzielonych myślnikiem. Zmienne wpisywane sĄ bezpośrednio, natomiast konkretne wartości tekstowe (w przykładzie znak myślnika) - w cudzysłowiu.

 


 

Funkcja Złącz.Teksty to jedna z funkcji tekstowych Excela. Wynikiem jej działania jest połączenie kliku tekstów w jeden ciąg tekstowy.
Argumentami funkcji są kolejne wartości Tekst1, Tekst2 itd. - aż do 30 argumentów wpisywanych bezpośrednio w okienku dialogowym formuły lub odwołujących się do wartości zawartych w komórkach.
Sama funkcja wydaje się prosta i niepozorna, ale w praktycznym wykorzystaniu - bardzo pożyteczna. Ja korzystam z niej bardzo często, ale to temat na osobną notkę.
W języku VBA odpowiednikiem tej funkcji znak &.

wtorek, 04 maja 2010

Funkcja VBA Replace, będąca odpowiednikiem Podstaw w Excelu  pozwala za pomoca kodu VBA zamienić w danym ciągu tekstowym jeden znak/znaki innym.
:Przykładowy zapis moze wyglądać tak:

Public Function Zamianka(GdzieZmieniam, CoZmieniam, NaCoZmieniam)

Zamianka = Replace(GdzieZmieniam, CoZmieniam, NaCoZmieniam, 1, -1, vbTextCompare)

End Function

Argumentami funkcji są:
Expression - (typu String) - wyrażenie tekstowe, w któym dokonujemy zmian. W przykładzie zmienna GdzieZmieniam
Find
- (typu String) - znak lub ciąg tekstowy do zmiany (CoZmieniam)
Replace - (typu String) - znak lub ciag tekstowy, który ma zastąpić tekst usuwany. W przykładzie - zmienna NaCoZmieniam
Start - (typu Long) - miejsce w ciagu, od którego rozpoczynamy wyszukiwanie i zmianę. Nie jest to zmienna obowiązkowa, brak zadeklarowanej wartości powoduje zastosowanie wartości domyślnej 1.
Count - (typu Long) - zmienna określa liczbę zmian.Wartościa domyślną (argument nie jest obowiązkowy) jest -1. Taka wartość parametru oznacza, że wszystkie zmiany w całym tekście zostaną wykonane.
VbCompareMethod - sposób wyszukiwania.
  Wartość 1 oznacza wybór metody porównania tekstowego.
  VbTextCompare,    bez odróżniania liter małych i dużych.
  Wartość 0 oznacza wybór metody porównania binarnego VbBinaryCompare,
  z uwzględnieniem wielkości liter. Jest to wartość domyślna funkcji.

 

Funkcja PODSTAW również należy do funkcji tekstowych Excela. Pozwala na zamianę znaku (lub ciągu znaków) w danym ciągu znaków na inny.
Argumenty funkcji to:
Tekst - wartość tekstowa, w której chcemy dokonać zmiany
Stary_tekst - znak/ciąg znaków, który ma zostać zamieniony na inny
Nowy_tekst - znak/ciąg znaków, którym zastępujemy stary tekst
Wystąpienie_liczba - określa, które z kolei wystąpienie ma być zastąpione. Jeżeli pole to pozostawimy puste - każdy Stary_tekst zostanie zastąpiony przez Nowy_tekst
Funkcja rozróżnia duże i małe litery, traktując je jako różne ciągi.
W języku VBA odpowiednikiem funkcji PODSTAW jest funkcja Replace.

 
1 , 2 , 3
| < Listopad 2017 > |
Pn Wt Śr Cz Pt So N
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      


Książki warte polecenia
zobacz szczegóły...


A tu oferta na dziś:





ministat liczniki.org



Napisz do mnie!