|
Excel, round
|
|||
---|---|---|---|
#18+
Имеется масса ячеек, в которых храняться числа с большим колвом знаков после запятой. Задача: округлить эти значения (например, до целых), желательно в несколько кликов мыши и стандартными средствами интерфейса. Формат ячейки не предлагать - должны измениться значения ячеек, а не их представление на экране ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 13:36 |
|
Excel, round
|
|||
---|---|---|---|
#18+
Конечно подойдет - она ведь легко устанавливается форматом ячейки ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:00 |
|
Excel, round
|
|||
---|---|---|---|
#18+
YanisИмеется масса ячеек, в которых храняться числа с большим колвом знаков после запятой. Задача: округлить эти значения (например, до целых), желательно в несколько кликов мыши и стандартными средствами интерфейса. Формат ячейки не предлагать - должны измениться значения ячеек, а не их представление на экране функции округления в Екселе: ОКРВВЕРХ ОКРВНИЗ ОКРУГЛ ОКРУГЛВВЕРХ ОКРУГЛВНИЗ Как вставить Пусть у тебя числа для округления в столбце, тогда 1) в соседнем столбце выделяешь область по размеру округляемого диапазона. 2) жмешь вставка -> функция -> категория: математические выбираешь любимую или нужную по месту ф-цию, например, ОКРУГЛ 3)переместив курсор в поле число , мышью выделяешь диапазон чисел для округления 4) перемещаеш курсор в поле число разрядов и набираешь там 0 (ноль) 5) нажимаешь CTRL-Enter ---------------------------------- 6) любуешся результатом. ---------------------------------- ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:01 |
|
Excel, round
|
|||
---|---|---|---|
#18+
Спасибо за подсказку, я ступил встроенной функцией воспользоваться. И все-таки это не совсем то. Таблица большая (статистическая), и ее авторы там намакросили дофига. В общем, желательно делать не так: 1. Скопировать диапазон ячеек на новый лист 2. ROUND() 3. Вклеить результат (Paste special -> Values) откуда взяли А округлять ячейки волшебным образом "на месте", прямо в неокругленных ячейках ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:19 |
|
Excel, round
|
|||
---|---|---|---|
#18+
я тут рекордер запустил посмотрел чё пишет Sub Макрос1() Range("D8:E10").Select Selection.NumberFormat = "0.00" Range("E8").Select End Sub Scio me nihil scire <<Jojo®>> ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:25 |
|
Excel, round
|
|||
---|---|---|---|
#18+
я не предлагал НИЧЕГО копировать я предлагал округлять в СОСЕДНЕМ столбце. как округлить в том же столбце без макроса, не знаю, а макрос щас попробую изобрАзить ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:30 |
|
Excel, round
|
|||
---|---|---|---|
#18+
YanisФормат ячейки не предлагать - должны измениться значения ячеек, а не их представление на экране ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:30 |
|
Excel, round
|
|||
---|---|---|---|
#18+
Похоже, придется написать процедурку с цикликом? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:31 |
|
Excel, round
|
|||
---|---|---|---|
#18+
Jojoя тут рекордер запустил посмотрел чё пишет Sub Макрос1() Range("D8:E10").Select Selection.NumberFormat = "0.00" Range("E8").Select End Sub Scio me nihil scire <<Jojo®>> Если попросить сумму от диапазона D8:E10, отобразить ее с форматом 0.00, то в общем случае отображенное число не совпадет с суммой округленных значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:33 |
|
Excel, round
|
|||
---|---|---|---|
#18+
2 Yanis в диапазоне для округлени - числа или формулы? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:41 |
|
Excel, round
|
|||
---|---|---|---|
#18+
Числа, результаты формул округлять не требуется ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:46 |
|
Excel, round
|
|||
---|---|---|---|
#18+
И они должны остаться числами ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:47 |
|
Excel, round
|
|||
---|---|---|---|
#18+
вот макрос. Использовать так 1) мышью выделть диапазон для округления 2) запустить макрос Код: plaintext 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.
Умнее, может что и получится, а пока, Так сойдет? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:53 |
|
Excel, round
|
|||
---|---|---|---|
#18+
какая-то проблема - не мог зпостить пару минут - а потомкак начали отщелкивать... мдераторам - если можно - уберите лишнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:54 |
|
Excel, round
|
|||
---|---|---|---|
#18+
Сойдет. Юзер доволен, спасибо за код, который мне не пришлось писать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 15:53 |
|
Excel, round
|
|||
---|---|---|---|
#18+
YanisСойдет. Юзер доволен, спасибо за код, который мне не пришлось писать :) Халява, плз !!! Могет и мине задать вопрос и уйти обедать, за енто время кто-нибудь кода запишет... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 16:26 |
|
Excel, round
|
|||
---|---|---|---|
#18+
Stepler YanisСойдет. Юзер доволен, спасибо за код, который мне не пришлось писать :) Халява, плз !!! Могет и мине задать вопрос и уйти обедать, за енто время кто-нибудь кода запишет... Тогда форум будет состоять только из вопросов без ответов, потому что никто не захочет ничего писать. Зато вопросов будет куча ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 16:32 |
|
Excel, round
|
|||
---|---|---|---|
#18+
Не слышно критики, а жаль... Вот решил указать на несколько возможных "улучшайзингов". (Улучшить что-то кардинально - переформулировать задачу - не смог - сдаюсь). Постараюсь перечислить в порядке убывания "важности", на свой взгляд. 1) On Error Resum Next - это для порядка 2) Set tRange = Selection.SpecialCells(xlConstants,xlNumbers) это позволит работать с произвольным выделением, округляя только числа и пропуская пустые клетки, формули и строки. 3) можно в макросе запросить точность округления, тогда один и тот же макрос можно использовать для разных округлений. lngDecPlaces = VBA.InputBox("Знаков после запятой:", "Точность округления", 0) 4) Для ускорения последней фазы - передачи пересчитанного массива обратно диапазону - должно быть полезно отключение перерисовки экрана и установка режима ручного пересчета. До передачи массива Dim oldCalcMode As Long Application.ScreenUpdating = False oldCalcMode = Application.Calculation Application.Calculation = xlCalculationManual Перед завершением макроса Application.Calculation = oldCalcMode 'пересчитаем измененный лист tRange.Worksheet.Calculate ' спорное утверждение - варианты 'не пересчитывать ' пересчитать все открытые книги Application.ScreenUpdating = True 5) Для ускорения обращения к Round полезно прокешировать объект WorksheetFunction. Dim tF As WorksheetFunction Set tF = Application.WorksheetFunction тогда тело внутреннего цикла будет выглядеть так v(i, j) = tF.Round(v(i, j), lngDecPlaces) 6) для ОЧЕНЬ больших выделений - можно попробовать пооптимизировать обращение к массиву, преобразовав его из двумерного в одномерный, тогда сам собой исчезнет внутренний цикл. При этом придется вводить вспомогательны фукции, и , в любом случае, применять Win API. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2004, 16:27 |
|
Excel, round
|
|||
---|---|---|---|
#18+
Улучшения в целом хороши, не спорю. Нет вопросов по 2, 3, 4, 5 предложениям. Возражение по 1: Не стоит везде ставить такой обработчик ошибок, по крайней мере пока в нем не возникнет нужда. 6: Для данной задачи не требуется. Тем более юзер собирался делать все ВРУЧНУЮ :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2004, 07:58 |
|
|
start [/forum/topic.php?fid=61&fpage=375&tid=2186672]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
119ms |
get topic data: |
24ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 238ms |
0 / 0 |