Discussion:
formatowanie tekstu (dodawanie zer na początku)
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Domo
2007-07-27 22:10:03 UTC
Permalink
Witam,
witam,
rozbilem sie o taki (banalny w vb6) problem jak formatowanie ciagu znakow.
Otoz z bazy wyciagam 8-cyfrowe numery artykulow (np. 00123456) i mam
potrzebe przedstawienia ich w formacie 001.234.56
Konstrukcja Format("00123456", "000\.000\.00") daje w wyniku 000\.000\.00
To co, pomozecie? :)
Zawsze mozesz swoja funkcje zmajstrowac, np.:

function MyFormat(byval s as String) as String
return s.Insert(3, "."C).Insert(7, "."C)
End Function

Jezeli te numery moga byc krotsze niz 8 i chcesz dopelniac zerami
z przodu, to np.:

function MyFormat2(byval s as String) as String
dim sb as new System.Text.StringBuilder(s)
if (sb.Length < 8)
sb.Insert(0, "0", 8 - sb.Length)
End If
return sb.Insert(3, "."C).Insert(7, "."C).ToString()
End Function

Jak to zaadaptować do excela żeby działało?

dzięki za podpowiedzi
Grzegorz Danowski
2007-07-28 12:33:21 UTC
Permalink
"Domo" <***@yahoo.ie> wrote in message news:***@w3g2000hsg.googlegroups.com...
<cite>
rozbilem sie o taki (banalny w vb6) problem jak formatowanie ciagu znakow.
Otoz z bazy wyciagam 8-cyfrowe numery artykulow (np. 00123456) i mam
potrzebe przedstawienia ich w formacie 001.234.56
Konstrukcja Format("00123456", "000\.000\.00") daje w wyniku 000\.000\.00
To co, pomozecie? :)
Zawsze mozesz swoja funkcje zmajstrowac, np.:

function MyFormat(byval s as String) as String
return s.Insert(3, "."C).Insert(7, "."C)
....

Jak to zaadaptować do excela żeby działało?

dzięki za podpowiedzi
</cite>

W Excelu będzie to:
Format("00123456", "000\.000\.00")
:)
--
Pozdrawiam
Grzegorz
Grzegorz Danowski
2007-07-28 12:49:33 UTC
Permalink
Otoz z bazy wyciagam 8-cyfrowe numery artykulow (np. 00123456) i mam
potrzebe przedstawienia ich w formacie 001.234.56
Konstrukcja Format("00123456", "000\.000\.00") daje w wyniku 000\.000\.00
Hmm, a w VB.NET dla działa przecież prawidłowo ToString:

Dim number As Integer = Int32.Parse("00123456")
Dim result As String = number.ToString("000\.000\.00")
--
Pozdrawiam
Grzegorz
Domo
2007-07-28 21:42:31 UTC
Permalink
On Jul 28, 1:49 pm, "Grzegorz Danowski"
Post by Grzegorz Danowski
Otoz z bazy wyciagam 8-cyfrowe numery artykulow (np. 00123456) i mam
potrzebe przedstawienia ich w formacie 001.234.56
Konstrukcja Format("00123456", "000\.000\.00") daje w wyniku 000\.000\.00
Dim number As Integer = Int32.Parse("00123456")
Dim result As String = number.ToString("000\.000\.00")
--
Pozdrawiam
Grzegorz
OK, to może jeszcze raz, tylko bardziej starannie z mojej strony.
Numer produktu jest zawsze 7 cyfrowy, ale oryginalny system zawsze
pomija zera na początku.
Gdy wyeksportuję jakiś raport do excela, mam problem przy
wyszukiwaniu. Trafiłem na ten wątek i miałem nadzieję że zadziała
dodawanie zer na początku, tak żeby w sumie było 7 cyfr.
W visual basic dla excela orientuję się słabo, o VB.net nie wiem nic.

Poniżej jest funkcja o której myślałem że załatwi sprawę, ale z
niewiadomych dla mnie przyczyn nie działa pod excelem.
Czy to chodzi tylko pod VB.net, czy poniższe komendy są dostępne w
excelu?

function MyFormat2(byval s as String) as String
dim sb as new System.Text.StringBuilder(s)
if (sb.Length < 8)
sb.Insert(0, "0", 8 - sb.Length)
End If
return sb.Insert(3, "."C).Insert(7, "."C).ToString()
End Function

pozdrawiam, i dziękuję za zainteresowanie
Dominik
Grzegorz Danowski
2007-07-28 21:55:47 UTC
Permalink
"Domo" <***@yahoo.ie> wrote in message news:***@b79g2000hse.googlegroups.com...
<cite>
Otoz z bazy wyciagam 8-cyfrowe numery artykulow (np. 00123456) i mam
potrzebe przedstawienia ich w formacie 001.234.56
Konstrukcja Format("00123456", "000\.000\.00") daje w wyniku
000\.000\.00
OK, to może jeszcze raz, tylko bardziej starannie z mojej strony.
Numer produktu jest zawsze 7 cyfrowy, ale oryginalny system zawsze
pomija zera na początku.
Gdy wyeksportuję jakiś raport do excela, mam problem przy
</cite>

Ale wciąż nie rozumiem dlaczego nie skorzystasz z wbudowanej w excelowym vba
funkcji Format? Jeśli nie potrzebujesz kropek między grupami cyfr i zawsze
ma być 7 cyfr, to wystarczy przecież:

Format(1234, "0000000")

Jak chcesz komplikować, to możesz użyć Right, np.:
Right("0000000" & 1234, 7)

Ewentualnie dodać z przodu tylko tyle cyfr co trzeba, np.:
String(7 - Len("1234"), "0") & "1234"
--
Pozdrawiam
Grzegorz
Domo
2007-07-29 22:50:08 UTC
Permalink
On Jul 28, 10:55 pm, "Grzegorz Danowski"
<cite>> > Otoz z bazy wyciagam 8-cyfrowe numery artykulow (np. 00123456) i mam
potrzebe przedstawienia ich w formacie 001.234.56
Konstrukcja Format("00123456", "000\.000\.00") daje w wyniku 000\.000\.00
OK, to może jeszcze raz, tylko bardziej starannie z mojej strony.
Numer produktu jest zawsze 7 cyfrowy, ale oryginalny system zawsze
pomija zera na początku.
Gdy wyeksportuję jakiś raport do excela, mam problem przy
</cite>
Ale wciąż nie rozumiem dlaczego nie skorzystasz z wbudowanej w excelowym vba
funkcji Format? Jeśli nie potrzebujesz kropek między grupami cyfr i zawsze
Format(1234, "0000000")
Right("0000000" & 1234, 7)
String(7 - Len("1234"), "0") & "1234"
--
Pozdrawiam
Grzegorz
Witam,

wszystko fajnie, ale dalej nie wiem jak zastosować to ostatnie
rozwiązanie z dodaniem z przodu tylu cyfr ile trzeba żeby razem było
7.
moja znajomość excelowskiego vb nie jest zbyt duża i nie wiem jak to
złożyć w całość.

czy mogę liczyć na pomoc?

dziękuję, Dominik
Grzegorz Danowski
2007-07-30 06:55:44 UTC
Permalink
Post by Domo
Numer produktu jest zawsze 7 cyfrowy, ale oryginalny system zawsze
pomija zera na początku.
Ale wciąż nie rozumiem dlaczego nie skorzystasz z wbudowanej w excelowym vba
funkcji Format? Jeśli nie potrzebujesz kropek między grupami cyfr i zawsze
Format(1234, "0000000")
<cite>
wszystko fajnie, ale dalej nie wiem jak zastosować to ostatnie
rozwiązanie z dodaniem z przodu tylu cyfr ile trzeba żeby razem było
7.
moja znajomość excelowskiego vb nie jest zbyt duża i nie wiem jak to
złożyć w całość.
</cite>

To napisz gdzie chcesz użyć tego formatowania, albo wklej kawałek kodu, w
którym chcesz go użyć.
--
Pozdrawiam
Grzegorz
Domo
2007-07-30 23:26:51 UTC
Permalink
Post by Grzegorz Danowski
To napisz gdzie chcesz użyć tego formatowania, albo wklej kawałek kodu, w
którym chcesz go użyć.
--
Pozdrawiam
Grzegorz
Mam kolumnę w której są numery produktów, wśród nich takie co mają 7,
6 albo 5 cyfr, choć wszystkie powinny mieć 7. Chciałbym mieć w innej
kolumnie te same numery produktów, ale wszystkie rozszerzone do
formatu 7 cyfrowego.

pozdrawiam i dziękuję, Dominik
PiotrS
2007-07-31 06:41:54 UTC
Permalink
Post by Domo
Mam kolumnę w której są numery produktów, wśród nich takie co mają 7,
6 albo 5 cyfr, choć wszystkie powinny mieć 7. Chciałbym mieć w innej
kolumnie te same numery produktów, ale wszystkie rozszerzone do
formatu 7 cyfrowego.
To moze wystarczy tak:
- prawy klik na kolumnie do formatowania -> wybierasz formatuj komórki-
Post by Domo
niestandardowe i w okienku po prawej tam gdzie jest "Typ:" wpisujesz
0000000

--
pozdrawiam
Piotr
Domo
2007-07-31 20:45:28 UTC
Permalink
Post by Domo
Mam kolumnę w której są numery produktów, wśród nich takie co mają 7,
6 albo 5 cyfr, choć wszystkie powinny mieć 7. Chciałbym mieć w innej
kolumnie te same numery produktów, ale wszystkie rozszerzone do
formatu 7 cyfrowego.
- prawy klik na kolumnie do formatowania -> wybierasz formatuj komórki->niestandardowe i w okienku po prawej tam gdzie jest "Typ:" wpisujesz
0000000
--
pozdrawiam
Piotr
No faktycznie że zadziałało :)
Tak się zakręciłem że szukałem na siłę czegoś skomplikowanego, a tu
proszę, najprostsze rozwiązanie w zasięgu ręki.
Jeszcze raz dziękuję i pozdrawiam.

Dominik
Domo
2007-07-31 20:53:20 UTC
Permalink
Post by Domo
Mam kolumnę w której są numery produktów, wśród nich takie co mają 7,
6 albo 5 cyfr, choć wszystkie powinny mieć 7. Chciałbym mieć w innej
kolumnie te same numery produktów, ale wszystkie rozszerzone do
formatu 7 cyfrowego.
- prawy klik na kolumnie do formatowania -> wybierasz formatuj komórki->niestandardowe i w okienku po prawej tam gdzie jest "Typ:" wpisujesz
0000000
--
pozdrawiam
Piotr
Uzupełnienie :(

Działa, ale tylko dla liczb. Jeżeli potem zamienię liczby na tekst,
zera znikają bezpowrotnie. I jak się z tym uporać?

Dominik
pxd74
2007-07-31 21:16:59 UTC
Permalink
Post by Domo
Uzupełnienie :(
Działa, ale tylko dla liczb. Jeżeli potem zamienię liczby na tekst,
zera znikają bezpowrotnie. I jak się z tym uporać?
A w jaki sposób zmieniasz te liczby na tekst?
Proponuje w jkiejś pustej kolumnie wpisać taką formułę (lub podobną):

=TEKST(A1;"000000")

i skopiowiać w dół, a następnie skopiować całą kolumnę pomocniczą i wkleić
specjalnie jako wartość do prawidłowej kolumny, a kolumnę z funckją TEKST
usunąć.
--
Pozdrowienia
pxd74
Domo
2007-08-01 20:27:21 UTC
Permalink
Post by pxd74
Post by Domo
Uzupełnienie :(
Działa, ale tylko dla liczb. Jeżeli potem zamienię liczby na tekst,
zera znikają bezpowrotnie. I jak się z tym uporać?
A w jaki sposób zmieniasz te liczby na tekst?
=TEKST(A1;"000000")
i skopiowiać w dół, a następnie skopiować całą kolumnę pomocniczą i wkleić
specjalnie jako wartość do prawidłowej kolumny, a kolumnę z funckją TEKST
usunąć.
--
Pozdrowienia
pxd74
Teraz działa. Normalnie korzystam z funkcji text to columns (tak jest
w angielskim excelu), ale przy konwersji z liczb na tekst excel pomija
zera, nawet jeśli je wyświetla dla liczb.
Twój sposób jest OK, mam co chciałem i nawet się obyło bez wielkich
kombinacji, za co jeszcze raz dziękuję.

Pozdrawiam, Dominik

pxd74
2007-07-29 22:32:33 UTC
Permalink
Post by Domo
Witam,
witam,
rozbilem sie o taki (banalny w vb6) problem jak formatowanie ciagu
znakow. Otoz z bazy wyciagam 8-cyfrowe numery artykulow (np.
00123456) i mam potrzebe przedstawienia ich w formacie 001.234.56
Konstrukcja Format("00123456", "000\.000\.00") daje w wyniku
000\.000\.00 To co, pomozecie? :)
A dlaczego nie użyć:

Format("00123456", "000"".""000"".""00")


BTW. Jeśli nadal chcesz przerabiać kod z net, to zamiast "return ... = ... "
użyj "NazwaFunckji = ..."
--
Pozdrowienia
pxd74
Loading...