Discussion:
[Excel 2003] Formatowanie nr-u rachunku bankowego
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Baobam
2006-09-11 20:10:52 UTC
Permalink
Witajcie,

W jaki sposób mogę sformatować numer rachunku bankowego, żeby wyświetlał
się w postaci XX XXXX XXXX XXXX XXXX XXXX XXXX ? Niestety probówałem jako
format niestandardowy podawać ## #### ... #### i 00 0000 ... 0000 ale
zawsze wychodzi pogrupowane co trzy cyfry, tak jakby to była liczba.
--
Pozdrawiam,
Baobam
pxd74
2006-09-12 10:00:43 UTC
Permalink
Post by Baobam
W jaki sposób mogę sformatować numer rachunku bankowego, żeby wyświetlał
się w postaci XX XXXX XXXX XXXX XXXX XXXX XXXX ? Niestety probówałem jako
format niestandardowy podawać ## #### ... #### i 00 0000 ... 0000 ale
zawsze wychodzi pogrupowane co trzy cyfry, tak jakby to była liczba.
Spację zawrzyj w cudzysłowie:
00" "0000" "0000" "0000 .... itd.
--
Pozdrowienia
pxd74
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Baobam
2006-09-12 10:20:38 UTC
Permalink
Post by pxd74
Post by Baobam
W jaki sposób mogę sformatować numer rachunku bankowego, żeby wyświetlał
się w postaci XX XXXX XXXX XXXX XXXX XXXX XXXX ? Niestety probówałem jako
format niestandardowy podawać ## #### ... #### i 00 0000 ... 0000 ale
zawsze wychodzi pogrupowane co trzy cyfry, tak jakby to była liczba.
00" "0000" "0000" "0000 .... itd.
Dzięki, o to chodziło.
--
Pozdrawiam,
Baobam
Tajan
2006-09-12 11:05:35 UTC
Permalink
Witam!
Post by pxd74
Post by Baobam
W jaki sposób mogę sformatować numer rachunku bankowego, żeby wyświetlał
się w postaci XX XXXX XXXX XXXX XXXX XXXX XXXX ? Niestety probówałem jako
format niestandardowy podawać ## #### ... #### i 00 0000 ... 0000 ale
zawsze wychodzi pogrupowane co trzy cyfry, tak jakby to była liczba.
00" "0000" "0000" "0000 .... itd.
Obawiam się, że to nic nie da, bo nie uda ci się wprowadzić numeru konta
bankowego jako liczby, ze względu na to, że Excel ogranicza ilośc cyfr
znaczących w liczbie do 15 (pozostałe sa zamieniane na 0), a konto bankowe ma
tych cyfr 26.
Jedynym rozwiązaniem wydaje się być zastosowanie formatu tekstowego i specjalne
makro, które odpowiednio sformatuje ciąg tekstowy.
Kiedyś nawet takie napisałem, ale musiałbym poszukać. Jeżeli będziesz
zainteresowny, to je przedstawię na grupie.

Tajan
Baobam
2006-09-12 14:33:26 UTC
Permalink
Post by Tajan
Witam!
Post by pxd74
Post by Baobam
W jaki sposób mogę sformatować numer rachunku bankowego, żeby wyświetlał
się w postaci XX XXXX XXXX XXXX XXXX XXXX XXXX ? Niestety probówałem jako
format niestandardowy podawać ## #### ... #### i 00 0000 ... 0000 ale
zawsze wychodzi pogrupowane co trzy cyfry, tak jakby to była liczba.
00" "0000" "0000" "0000 .... itd.
Obawiam się, że to nic nie da, bo nie uda ci się wprowadzić numeru konta
bankowego jako liczby, ze względu na to, że Excel ogranicza ilośc cyfr
znaczących w liczbie do 15 (pozostałe sa zamieniane na 0), a konto bankowe ma
tych cyfr 26.
Jedynym rozwiązaniem wydaje się być zastosowanie formatu tekstowego i specjalne
makro, które odpowiednio sformatuje ciąg tekstowy.
Kiedyś nawet takie napisałem, ale musiałbym poszukać. Jeżeli będziesz
zainteresowny, to je przedstawię na grupie.
Hej.
Rzeczywiście ten sposób nie działa. Początkowo nie zauważyłem, że wszystkie
numery kont kończą się samymi zerami.

Napisałem sobie makro, które sprawdza oraz formatuje numer, ale z jakiegoś
powodu z numeru nie są usuwane spacje przy pomocy Replace(). Gdybyś mógł
podesłać swoje byłbym wdzięczny.

Ponieważ to mój pierwszy program w VB (VBA) (to, że nie mogłem tego zrobić
zmotywowało mnie do nauki ;) i nie znam tego języka za dobrze, dlatego
proszę również o ocenę tego co tu naskrobałem (co można poprawić itd.):

Sub FormatujNRB()
Dim NRB, NRBPL, Wagi, Suma As Integer
With ActiveCell
Selection.NumberFormat = "@"
.FormulaR1C1 = "44 1050 1445 1000 0022 9238 1726"
Wagi = Array(57, 93, 19, 31, 71, 75, 56, 25, 51, 73, 17, 89, 38,
62, 45, 53, 15, 50, 5, 49, 34, 81, 76, 27, 90, 9, 30, 3, 10, 1)
NRB = Replace(.Text, " ", "")
If Len(NRB) <> 26 Then
Call Blad
Exit Sub
End If
NRBPL = Right(NRB, 24) + "2521" + Left(NRB, 2)
For I = 30 To 1 Step -1
Suma = Suma + CInt(Mid(NRBPL, I, 1)) * Wagi(I - 1)
Next I
If Suma Mod 97 = 1 Then
.FormulaR1C1 = Left(NRB, 2)
For I = 3 To 26 Step 4
.FormulaR1C1 = .Text + " " + Mid(NRB, I, 4)
Next I
Else
Call Blad
Exit Sub
End If
End With
End Sub

Sub Blad()
ActiveCell.FormulaR1C1 = "Niepoprawny NRB"
End Sub
--
Pozdrawiam,
Baobam
Baobam
2006-09-12 14:40:55 UTC
Permalink
Aha i nie mam pojęcia co muszę zrobić, żeby to makro uruchamiało się za
każdym razem automatycznie jak wpiszę jakiś numer konta w wybranym zakresie
komórek. Działa ale tylko z przycisku.
--
Pozdrawiam,
Baobam
Baobam
2006-09-12 14:36:21 UTC
Permalink
Post by Tajan
Witam!
Post by pxd74
Post by Baobam
W jaki sposób mogę sformatować numer rachunku bankowego, żeby wyświetlał
się w postaci XX XXXX XXXX XXXX XXXX XXXX XXXX ? Niestety probówałem jako
format niestandardowy podawać ## #### ... #### i 00 0000 ... 0000 ale
zawsze wychodzi pogrupowane co trzy cyfry, tak jakby to była liczba.
00" "0000" "0000" "0000 .... itd.
Obawiam się, że to nic nie da, bo nie uda ci się wprowadzić numeru konta
bankowego jako liczby, ze względu na to, że Excel ogranicza ilośc cyfr
znaczących w liczbie do 15 (pozostałe sa zamieniane na 0), a konto bankowe ma
tych cyfr 26.
Jedynym rozwiązaniem wydaje się być zastosowanie formatu tekstowego i specjalne
makro, które odpowiednio sformatuje ciąg tekstowy.
Kiedyś nawet takie napisałem, ale musiałbym poszukać. Jeżeli będziesz
zainteresowny, to je przedstawię na grupie.
Hej.
Rzeczywiście ten sposób nie działa. Początkowo nie zauważyłem, że wszystkie
numery kont kończą się samymi zerami.

Napisałem sobie makro, które sprawdza oraz formatuje numer. Ponieważ to mój
pierwszy program w VB (VBA) (to, że nie mogłem tego zrobić zmotywowało mnie
do nauki ;) i nie znam tego języka za dobrze, dlatego proszę również o
ocenę tego co tu naskrobałem (co można poprawić itd.):

Sub FormatujNRB()
Dim NRB, NRBPL, Wagi, Suma As Integer
With ActiveCell
Selection.NumberFormat = "@"
Wagi = Array(57, 93, 19, 31, 71, 75, 56, 25, 51, 73, 17, 89, 38,
62, 45, 53, 15, 50, 5, 49, 34, 81, 76, 27, 90, 9, 30, 3, 10, 1)
NRB = Replace(.Text, " ", "")
If Len(NRB) <> 26 Then
Call Blad
Exit Sub
End If
NRBPL = Right(NRB, 24) + "2521" + Left(NRB, 2)
For I = 30 To 1 Step -1
Suma = Suma + CInt(Mid(NRBPL, I, 1)) * Wagi(I - 1)
Next I
If Suma Mod 97 = 1 Then
.FormulaR1C1 = Left(NRB, 2)
For I = 3 To 26 Step 4
.FormulaR1C1 = .Text + " " + Mid(NRB, I, 4)
Next I
Else
Call Blad
Exit Sub
End If
End With
End Sub

Sub Blad()
ActiveCell.FormulaR1C1 = "Niepoprawny NRB"
End Sub
--
Pozdrawiam,
Baobam
Baobam
2006-09-12 14:41:44 UTC
Permalink
Aha i nie mam pojęcia co muszę zrobić, żeby to makro uruchamiało się za
każdym razem automatycznie jak wpiszę jakiś numer konta w wybranym zakresie
komórek. Działa ale tylko z przycisku.
--
Pozdrawiam,
Baobam
Tajan
2006-09-12 21:13:04 UTC
Permalink
Witam!
Post by Baobam
Aha i nie mam pojęcia co muszę zrobić, żeby to makro uruchamiało się
za każdym razem automatycznie jak wpiszę jakiś numer konta w wybranym
zakresie komórek. Działa ale tylko z przycisku.
Należy makro umieścić w module arkusza, gdzie wpisujesz konta, w specjalej
procedurze o nazwie Worksheet_Change. Jest ona uruchamiana automatycznie,
jeżeli nastąpi zmiana wartości komórek, przy czym odwołanie do zmienionego
obszaru jest przekazywane do procedury za pomocą argumentu Target.
Przykładowo, ja do formatowania numeru posługiwałem się takim kodem:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim tekst As String, t As String
Dim i As Integer
Dim kom As Range


For Each kom In Target.Cells
If .Column = 3 And .Value <> "" And .Row > 1 Then
tekst = Application.Substitute(.Text, " ", "")
t = Left(tekst, 2)
For i = 3 To (Len(tekst)) Step 4
t = t & " " & Mid(tekst, i, 4)
Next
Application.EnableEvents = False
.Value = t
Application.EnableEvents = True

End If
Next

End Sub

Zastosowałem w nim pętlę na wypadek, gdyby zmienionych zostało jednocześnie
kilka komórek (np. poprzez skopiowanie) oraz sprawdzenie, czy zmiana
nastąpiła w odpowiednich komórkach arkusza, w tym przykładzie 3 kolumna i
wiersz większy od 1.
Do sprawdzania numeru użyłem własnej funkcji w formatowaniu warunkowym,
nadając dla błędnych numerów kolor czerwony (w Twoim rozwiązaniu bardzo
niewygodna jest konieczność ponownego wprowadzania całego numeru w przypadku
błędu, bo zazwyczaj chodzi o poprawienie tylko jednej cyfry).

Pozdrawiam
Tajan
Sławomir Stępniak
2006-09-28 21:49:23 UTC
Permalink
Post by Baobam
Witajcie,
W jaki sposób mogę sformatować numer rachunku bankowego, żeby wyświetlał
się w postaci XX XXXX XXXX XXXX XXXX XXXX XXXX ? Niestety probówałem jako
format niestandardowy podawać ## #### ... #### i 00 0000 ... 0000 ale
zawsze wychodzi pogrupowane co trzy cyfry, tak jakby to była liczba.
Użyj '_ ' (podkreślnik + spacja), ale tyle razy ile trzeba (sam nie powórzy)
##_ ####_ ####_ ####_ ####_ ####_ ####
lub
00_ 0000_ 0000_ 0000_ 0000_ 0000_ 0000
z tym, że pełen (międzynarodowy) nr IBAN ma chyba 32 zanaki, więc od razu:
####_ ####_ ####_ ####_ ####_ ####_ ####_ ####

Tyle teorii, a teraz praktycznie, wprowadzenie numeru konta jako liczby skończy
się tym, że excel zachowa tylko 15 cyfr znaczących, i dowolny numer np.
11 1111 1111 1111 1111 1111 1111 zamieni na 11 1111 1111 1111 1000 0000 0000

Chyba pozostaje tylko format tekstowy, a spacje wprowadzone ręcznie,
albo nawet lepiej bez spacji, patrz:
http://www.ecbs.org/Download/Tr201reg.pdf
Electronic transmission
Structure ... Always 26 digits without separators.
Dopiero papierowa wersja ma zawierać spacje.

Loading...