Michal Wojtczak

Michal Wojtczak Właściciel, Własna
Działalność

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

Problem z ,,(dodaniem zaokrąglenia do wartości lub funkcji w komórkach)

Witajcie

Mam problem ze stworzeniem odpowiedniego makra, które dodawałoby do zaznaczonych komórek (w których mogą być wartości lub formuły) funkcję [ZAOKR()].

Przykład z liczbą

A1= 57,48 po makrze =ZAOKR(57,48;1)

Przykład z funkcją

A1= B2*C2 po makrze =ZAOKR(B2*C2;1)

Czy ma ktoś pomysł jak to rozwiązać?
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

A dlaczego makro? Przecież można to zrobić formułami.
Nie wiem,na czym polega problem, ale w kodzie VBA funkcja odpowiadająca za zaokrąglanie to Round().
Andy L.

Andy L. ITM, VUB

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

Ctrl+A
Format - Number - Decimal place = 1

a jak koniecznie chcesz makro to:

Cells.Select
Selection.NumberFormat = "0.0"

lub

Selection.SpecialCells(xlCellTypeConstants, 1).Select
Selection.SpecialCells(xlCellTypeFormulas, 1).Select
Selection.NumberFormat = "0.0"

stosowanie w takim przypadku funkcji ROUND() jest zbędnym mnożeniem bytów.
:))))

edit:
jeżeli delimiter w wersji PL to przecinek to zmien "0.0" na "0,0"Ten post został edytowany przez Autora dnia 07.12.15 o godzinie 19:11
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

Andy L.:
stosowanie w takim przypadku funkcji ROUND() jest zbędnym mnożeniem bytów.

To zależy jaki chcemy osiągnąć efekt. Formatowanie tylko zmienia ilość widocznych miejsc po przecinku, ale w komórce nadal jest pełna liczba. Funkcja Zaokr() czy w VBA Round() - rzeczywiście zaokrągla liczbę, wstawiając do komórki nową jej wartość.
Andy L.

Andy L. ITM, VUB

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

Jeżeli stosujesz to do wszystkiego (wyniki formuł czy constans) to bez znaczenia czy zrobisz to formatem czy ROUND bo w efekcie też otrzymasz wynik zaokrąglony, a stosując funkcję wks lub vba ROUND() pozbawiasz się możliwości sprawdzenia dlaczego wynik jest błędny. Klasyczny problem Excel vs. Kalkulator :)

edit
pytaniem na które powinien odpowiedziec OP jest: co chce uzyskać stosując to zaokrąglanie.

a tak na marginesie to można wykorzystać to samo (prawie) dwa razy , raz dla wartości a raz dla formuły:

rngArea.Formula = "=ROUND(" & Right$(rngArea.Formula Len(rngArea.Formula) -1) & ",1)"
i
rngArea.Value = "=ROUND(" & Right$(rngArea.Value Len(rngArea.Value) ) & ",1)"

plus trochę VBA do tegoTen post został edytowany przez Autora dnia 08.12.15 o godzinie 03:40
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

Dla edycji większej ilości danych (bez użycia formuł) polecam taki kalkulator:

Obrazek

Zawiera on również zaokrąglenia.
Michal Wojtczak

Michal Wojtczak Właściciel, Własna
Działalność

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

Chodziło o faktyczne zaokrąglenie liczby a nie jedynie zmienienie formatowania.

Przy pomocy jednego z użytkowników udało mi się rozwiązać ten problem.

Gdyby ktoś inny potrzebował to makro wygląda następująco:

Sub Makro1()
Dim Str As String
For Each cell In Selection
Str = cell.FormulaR1C1
If Mid(Str, 1, 1) = "=" Then Str = Mid(Str, 2)
cell.FormulaR1C1 = "=ROUND(" & Str & ",1)"
Next cell
End Sub
Andy L.

Andy L. ITM, VUB

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

A co z pustą komórką w zakresie, gdzie w wyniku otrzymujemy takie dziwne coś: =ROUND(,1) ?Ten post został edytowany przez Autora dnia 08.12.15 o godzinie 17:48
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

A czemu FormulaR1C1 a nie Value?
Wypada też użyć funkcji isnumeric() i przypisać dane do odpowiedniej zmiennej a nie operować na "słowach"Ten post został edytowany przez Autora dnia 08.12.15 o godzinie 18:01
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

Zdaje się, że w tych komórkach nie ma liczb tylko tekst, stąd te funkcje tekstowe w kodzie.
Poza tym nie rozumiem, dlaczego kodem wstawiane są funkcje?
Andy L.

Andy L. ITM, VUB

Temat: Dodanie zaokrąglenia do funkcji w komórce - makro

Może zrobić UNION dwóch typów zawartości komórek (Formula i Constants) i operować na tym "junjonie" ? Jednocześnie pomija komórki typu "blank".
Sprawdzone, działa

Następna dyskusja:

Abc excela - instalacja d...




Wyślij zaproszenie do