Centrum skryptów - Microsoft Office

Jak określić liczbę miejsc po przecinku wyświetlanych w arkuszach kalkulacyjnych programu Excel?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak określić liczbę miejsc po przecinku wyświetlanych w arkuszach kalkulacyjnych programu Excel?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak określić liczbę miejsc po przecinku wyświetlanych w arkuszach kalkulacyjnych programu Excel?

-- JS

Cześć Skrypciarze! Odpowiedź

Cześć, JS. W historii każdego kraju jest wielu osobników, którzy z powodu swoich niezwykłych dokonań zasługują na to, by na ich cześć uczynić jakiś dzień w roku świętem narodowym. Nie wszystkie jednak zachowania, pomimo iż bardzo niezwykłe, zasługują na takie wyróżnienie. Z drugiej strony, tak wiele osiągnięć pozostaje niedostępnych dla szerokiej publiczności.

Jednym z nich jest stworzenie skryptu pozwalającego określić liczbę miejsc po przecinku w ułamkach dziesiętnych, wyświetlanych w arkuszach kalkulacyjnych programu Excel:

Set objExcel = CreateObject("Excel.Application")

objExcel.Visible = True

Set objWorkbook = objExcel.Workbooks.Add()

Set objWorksheet = objWorkbook.Worksheets(1)



For i = 1 to 10

    objExcel.Cells(i, 1).Value = i/6

Next



Set objRange = objWorksheet.UsedRange

objRange.NumberFormat = "#.0000"

Jak ten skrypt działa? Dobre pytanie. A oto wyjaśnienie:

No cóż. Zaczynamy od utworzenia wystąpienia obiektu Excel.Application (właśnie tego poczciwego obiektu, Excel.Application), a następnie nadajemy właściwości Visible wartość True. Uzyskujemy w ten sposób działające wystąpienie obiektu Excel, które możemy zobaczyć na ekranie. Później stosujemy poniższe dwa wiersze kodu, aby dodać nowy skoroszyt do wystąpienia obiektu Excel i tworzymy połączenie z pierwszym arkuszem w tym skoroszycie:

Set objWorkbook = objExcel.Workbooks.Add()

Set objWorksheet = objWorkbook.Worksheets(1)

Czy to nie załatwia wszystkiego? Wszyscy wiemy, że praca z arkuszem kalkulacyjnym bez danych to żadna frajda. Potrzebne nam są liczby, więc wykorzystamy tu małą pętlę For Next, która po prostu użyje którejś z cyfr z przedziału od 1 do 10, podzieli ją przez 6 i umieści każdy iloraz w oddzielnej komórce kolumny A:

For i = 1 to 10

    objExcel.Cells(i, 1).Value = i/6

Next

Otrzymany arkusz kalkulacyjny wyglądający następująco:

Tak, wiem, co sobie teraz myślicie. Wydaje wam się, że taki arkusz na nic nam się nie przyda. Zastanawiacie się: Czy nie da się tak sformatować tych komórek, aby wyświetlały 4 miejsca po przecinku?

Już tłumaczę, wszystko po kolei: Owszem, możemy sformatować te komórki tak, aby wyświetlały cztery miejsca po przecinku; z jakiegoż innego powodu potrzebne by nam były te dwa wiersze kodu:

Set objRange = objWorksheet.UsedRange

objRange.NumberFormat = "#.0000"

Jak widać, za pomocą pierwszego wiersza tworzymy odwołanie do obiektu (objRange) dla „zakresu używanego” arkusza kalkulacyjnego. Co to jest zakres używany? Zakres używany, jak sama nazwa wskazuje, jest to zakres reprezentujący komórki, które zawierają dane (tj. te, które są używane). W naszym przykładzie mamy dane w komórkach z zakresu od A1 do A10, zatem zakres używany będzie obejmował właśnie te komórki – od A1 do A10.

Następnie, za pomocą drugiego wiersza określamy liczbę miejsc po przecinku dla komórek z tego zakresu. Chcemy, aby wyświetlane były cztery miejsca po przecinku, zatem podczas przypisywania wartości dla właściwości NumberFormat wpisujemy cztery zera po przecinku. Po tej operacji otrzymamy arkusz kalkulacyjny wyglądający następująco:

To ci dopiero.

A cóż to jest? Jednak chcemy, żeby wyświetlanych było pięć miejsc po przecinku? To nie jest byle jaka zachcianka. Ale OK., po prostu wpisujemy pięć zer po przecinku, w taki oto sposób:

objRange.NumberFormat = "#.00000"

Chcemy wstawić zero prowadzące przed przecinkiem? Po prostu zmieniamy znak # na 0:

objRange.NumberFormat = "0.00000"

Mówię wam, mogę tak przez cały dzień. Albo raczej mógłbym, ponieważ o ósmej zaczyna się mecz, a nie chcę go przegapić.

 Do początku strony Do początku strony

Centrum skryptów - Microsoft Office