» | Казахстанский Бухгалтерский форум www.balans.kz | Использование формул и макросов в Excel |
|
Показать сообщения: Начиная со старых .::. Начиная с новых |
Автор: | Алекс Мневис |
Добавлено: | #1  Сб Окт 24, 2009 13:27:43 |
Заголовок сообщения: | Использование формул и макросов в Excel |
Добрый день! Поделитесь опытом работы в Excel, думаю в нем работают большинство пользователей. Вопрос: как все значения выбранного массива ячеек умножить или разделить на одно и то же число? Есть такой способ, минус - слетают формулы, для чего необходимо: допустим таблица в тенге - нужно быстро перевести в тыс.тенге (*0,001 или /1000) Sub MultAllCells() Dim dblMult As Double Dim cell As Range ' Ввод коэффициента для умножения dblMult = InputBox("Введите коэффициент, на который следует умножать") ' Умножение содержимого на введенный коэффициент For Each cell In Selection If IsNumeric(cell.Value) And cell.Value <> " " Then ' Умножаются только ячейки, содержащие числовые данные cell.Value = cell.Value * dblMult Else MsgBox "В ячейке " & cell.Address & " нечисловое значение" End If Next End Sub Добавлено спустя 4 минуты 8 секунд: Пример Переименовано и перенесено в другой подфорум = Elis Добавлено спустя 18 минут 33 секунды: Я был бы рад, чтобы это сделалось и без макросов, а штатными возможностями Excel :oops: |
Автор: | Технический | ||
Добавлено: | #2  Сб Окт 24, 2009 14:04:10 | ||
Заголовок сообщения: | |||
штатными возможностями Excel A1/$B$1 это значит ячейку A1 делить на постоянную величину ячейки B1 |
Автор: | Elis |
Добавлено: | #3  Сб Окт 24, 2009 14:55:49 |
Заголовок сообщения: | |
Если бы все было так просто. Ему надо, чтобы значение изменилось в той же же ячейке, а не в другие ячейки записать сумму не в "тенге", а в "тыс.тенге". А в той же ячейке это будут циклические ссылки. К тому же у него в массиве (в таблице) есть и значения, которые нужно умножать, а есть и формулы. А их нужно оставить. Я знаю, с чем это он там мучается. Так что без макросов я выхода не вижу. Самый красивый "однокнопочный" выход поставленной задачи. Ну не будете же вы, Алекс Мневис, это записывать на другой лист Excel, а потом вручную копировать значения отдельных колонок нового массива поверх тех же колонок старого? Алекс Мневис, я бы помогла, но у меня сейчас, правда, времени нет. Я не ас в макросах, мне на это день убить надо. Пусть спецы быстренько напишут. |
Автор: | Алекс Мневис |
Добавлено: | #4  Пн Окт 26, 2009 06:50:43 |
Заголовок сообщения: | |
Спасибо, Elis Вы правильно меня поняли... |
Автор: | Алекс Мневис |
Добавлено: | #5  Вт Окт 27, 2009 19:42:16 |
Заголовок сообщения: | |
Если кому интересно, нашел более простое решение: Если вопрос в том, как умножить числа во множестве ячеек на листе, то решение в использовании Специальной вставки - вводим в свободной ячейке 1.20 (т.е.120%) - копируем эту ячейку - выделяем всю область (все области) ячеек с числами, которые нужно увеличить - правая клавиша мыши - контектное меню - специальная вставка - операция - умножить - ОК. |
Автор: | Алекс Мневис |
Добавлено: | #6  Вт Апр 19, 2011 21:33:57 |
Заголовок сообщения: | |
Может кому пригодится - как преобразовать число в Excel в пропись 1. Excel - Севис - Надстройки - Обзор - указываем путь к сохраненному файлу - ОК 2. В нужной ячейке - Вставка - Функция - Категория - Определенный пользователем - Указываем ячейку с числом, которое нужно преобразовать Добавлено спустя 1 минуту 14 секунд: Файл надстройки |
Автор: | Рита |
Добавлено: | #7  Вт Апр 19, 2011 23:03:00 |
Заголовок сообщения: | |
Алекс Мневис, спасибо! Только в Офисе-2007 немного по-другому. 1. Кнопка "Qffice" (цветная круглая в левом верхнем углу) - Параметры Excel - Надстройки - Перейти - Обзор - указываем путь к сохраненному файлу - ОК А вот пункт 2 не могу выполнить, на вкладке Вставка не нахожу Функция. Может в офисе-2007 как-то по-другому надо, а как - не могу сообразить. |
Автор: | Алекс Мневис | ||
Добавлено: | #8  Ср Апр 20, 2011 06:20:54 | ||
Заголовок сообщения: | |||
Рита,
я здесь не смогу подсказать - не работал в 2007 |
Автор: | Рита |
Добавлено: | #9  Ср Апр 20, 2011 10:15:35 |
Заголовок сообщения: | |
Разобралась. Не дошло сразу, что надо вставлять как обычную функцию, думала, что через специальную вставку. Итак, для Офис-2007: 2. Формулы - Вставить функцию -Категория - Определенные пользователем - Указываем ячейку с числом, которое нужно преобразовать |
Автор: | Мэс |
Добавлено: | #10  Ср Апр 20, 2011 11:12:18 |
Заголовок сообщения: | |
О, любимая тема. Чем помочь? |
Автор: | Рита |
Добавлено: | #11  Ср Апр 20, 2011 11:21:13 |
Заголовок сообщения: | |
Спасибо, разобрались уже :) |
Автор: | павлин1980 | ||
Добавлено: | #12  Ср Апр 20, 2011 11:38:25 | ||
Заголовок сообщения: | |||
Мэс, если есть желание и время хотелось бы знать как вообще задать формулу , в екселе знаю только элементарные математические действия(+, -,) функции это темный лес для меня. Так и не поняла как
|
Автор: | Мэс | ||||
Добавлено: | #13  Ср Апр 20, 2011 12:20:18 | ||||
Заголовок сообщения: | |||||
Желание есть, со временем не все так радужно. Но. Попробую рассказать касательно преобразования числа в пропись в Excel. В программе MS Excel уже есть огромное количество встроенных функций, многие из них очень полезны, особенно логические, текстовые, математические, финансовые. Этих функций достаточно, чтобы решить почти любую задачу как финансового так и не финансового характера. Бухгалтеру очень полезно ими пользоваться. Например, у одного моего клиента пошла разница по НДС. За весь 2010 год. С помощью встроенных отчетов в 1С ошибку найти невозможно. А Excel помог в кратчайшие сроки выяснить, где пошла разница. Но бывает так, что встроенных функций недостаточно. И Excel был бы просто таблицей, если бы не было поддержки макросов. А с помощью макросов (написанных на языке VBA - Visual Basic for Applications) можно творить настоящие чудеса. Ну это все лирика. Тут выше дали ссылку на макрос, который число преобразует в текст-пропись. Принцип работы его прост: на вход макросу даем число (это параметр функции), а он возвращает текст. Макрос число разбивает на миллионы, тысячи, единицы, каждому из этих чисел сопоставляет название прописью и получает текстовую строку. Если у функции указано, что она PUBLIC (это по русски - параметр видимости: если PUBLIC - то функция видна прямо в книге Excel), то ее можно вызывать, набирая в ячейке название функции, в нашем случае называется она СУММ_ПРОП_ТЕНГЕ(). То есть так и пишем в ячейке "=СУММ_ПРОП_ТЕНГЕ(Ячейка_с_числовым_значением)". Теперь, как сделать, чтобы это функция работала всегда, а не приходилось каждый раз запускать файл Тенге_прописью.xla. XLA - это файл-шаблон. Когда вы его запускаете, в книгах Excel становятся доступны макросы, которые есть в этом шаблоне. Но так работать неудобно. Лучше файл прописью.xla разместить там, где лежат другие шаблоны (например: для MS Office 2010 c:\Program Files\Microsoft Office\Office14\Library\), далее заходим в Надстройки (для MS Office 2010 - Файл -> Параметры -> Надстройки. Управление "Надстройки Excel" -> Перейти. Нажимаем "Обзор", ищем наш файл. Он появится в списке надстроек. Ставим галочку и Ok). Теперь в любой книге будет работать этот макрос. PS: Для старых версий Ms Office, ниже версии 2007, уже не помню как найти управление надстройками. |