Excelпомощь, консультации...
#102
Отправлено 20.09.2010, 19:50:29
Как вариант отсортировать колонку и рядом протянуть условие, если две соседние строки одинаковы, то 1 иначе 0 и отсортировать по колонке условия тогда по идее все дубли должны собраться в одном местеЗдравствуйте! Вот такая у меня задачка помогите пожалуйста: в списке много строк и надо найти повторяющие, они представлены в разброс. На данный момент щелкаю каждое наименование в фильтре и смотрю есть ли у него повторения.
#107
Отправлено 13.04.2011, 19:30:10
Да пожалуйста. Предположим, вы (или ваши родственники, друзья, знакомые - в данном случае не важно) купили автомобиль класса джип. У джипа довольно большой расход топлива, так что отслеживание расхода является для владельца актуальной и постоянной задачей. У джипа на дисплее приборной панели отображается расход топлива, но часто он указан не в привычных для нас литрах на 100 км пройденного пути, а в MPG (Miles per Gallon - количество миль пробега на 1 галлон израсходованного топлива). Владелец джипа хочет вести журнал учета расхода топлива в таблице Excel, но не в американских MPG, а в удобных для него л/100 км. Перевести MPG в л/100 км не трудно, но... Придется уточнить в справочнике, сколько литров в 1 галлоне, сколько км в 1 миле, потом ввести формулу преобразования в строке формул... И не ошибиться, ничего не перепутать при ручном вводе... И так в каждом документе (таблице Excel), где это необходимо... В общем, удовольствие ниже среднего.Дайте пищу для ума
С другой стороны, городить из-за одной полезной формулы (и даже нескольких) целое отдельное настольное приложение Windows, с возможностями экспорта результатов в Excel, конечно, бессмысленно. Нужно, чтобы в Excel была уже готовая, встроенная функция преобразования. Пусть она называется, например, MPG_2_L100KM. К этой функции предъявляются следующие требования:
- Функция при вызове должна принимать расход в MPG и возвращать значение расхода в л/100 км (точности результата до 2 знаков после запятой будет вполне достаточно).
- Нужно, чтобы пользоваться этой функцией было так же удобно, как любыми стандартными функциями Excel (SIN, COS, MAX, MIN, СРЗНАЧ и т.д.). То есть, чтобы достаточно было нажать на кнопочку fx (см. на рисунке рядом со строкой ввода) и среди стандартных функций в списке появилась нужная нам функция MPG_2_L100KM. Иначе говоря, эта функция должна быть доступна рядовому пользователю (не программисту VBA).
- Нужно, чтобы функция принимала в своем аргументе не только численное значение MPG (например, MPG_2_L100KM(15), но и значение, хранимое по адресу какой-либо ячейки. Например, для ячейки B3 вызов функции будет выглядеть как MPG_2_L100KM(B3).
- Нужно, чтобы эта функция работала на уровне приложения Excel, а не на уровне отдельного документа. То есть, чтобы не надо было ее копировать из одних файлов xls/xlsx в другие. Это значит, функция должна быть в скомпилированной библиотеке, вместе с аналогичными другими полезными функциями (например, PSI_2_KGPCM2 - преобразование давления из фунтов на кв. дюйм в кг/см2 и наоборот). Другими словами, нужно разработать встраиваемый модуль (Add-In) для Excel.
Общие соображения, идеи, советы как это сделать, меня тоже не интересуют. Кому хотелось получить "пищу для ума" - вот она.
Готовый результат должен соответствовать требованиям, указанным выше, и выглядеть примерно так:
#110
Отправлено 20.06.2011, 12:17:04
возник вопрос, прошу помоч.
Итак:
имеем лист с отчетом. который нужно отправлять по электронке желающим.
знаю, что есть маркрос, который формирует лист, и вставляет в электронное сообщение
Планета Ексель что то не хочет открыватся, поэтому прошу здесь.
у меня excel 7, англ версия
а так же попутно, как создать кнопку со ссылкой на маркос.
Буду благодарна за листинг.
#115
Отправлено 20.06.2011, 17:26:04
Среди стандартных функций Excel такой функции нет, но даже средний пользователь легко может ее написать на VBA.такой вопрос есть ли в Excel функция где например в ячейке цифра 8, а потом она прописывалась прописью (восемь) в ту ячейку которую я задам
Например, преобразование любого числа в строку, если это число меньше 20, делается элементарно:
Function Num2String(num As Integer) As String Num2String = Switch(num = 1, "один", num = 2, "два", num = 3, "три") End FunctionДля чисел > 20 функция будет выглядеть лишь немного сложнее. Надо только предварительно выделить из заданного числа его десятки, сотни и т.д. (т.е. 365 => "триста " & "шестьдесят " & "пять")
Если нет времени и желания возиться с этим, то в Сети есть 10500 готовых решений этой уже давно известной простой задачи. Гуглить по строке "сумма прописью".
#117
Отправлено 15.07.2011, 11:53:04
Да пожалуйста. Предположим, вы (или ваши родственники, друзья, знакомые - в данном случае не важно) купили автомобиль класса джип. У джипа довольно большой расход топлива, так что отслеживание расхода является для владельца актуальной и постоянной задачей. У джипа на дисплее приборной панели отображается расход топлива, но часто он указан не в привычных для нас литрах на 100 км пройденного пути, а в MPG (Miles per Gallon - количество миль пробега на 1 галлон израсходованного топлива). Владелец джипа хочет вести журнал учета расхода топлива в таблице Excel, но не в американских MPG, а в удобных для него л/100 км. Перевести MPG в л/100 км не трудно, но... Придется уточнить в справочнике, сколько литров в 1 галлоне, сколько км в 1 миле, потом ввести формулу преобразования в строке формул... И не ошибиться, ничего не перепутать при ручном вводе... И так в каждом документе (таблице Excel), где это необходимо... В общем, удовольствие ниже среднего.
Дайте пищу для ума
С другой стороны, городить из-за одной полезной формулы (и даже нескольких) целое отдельное настольное приложение Windows, с возможностями экспорта результатов в Excel, конечно, бессмысленно. Нужно, чтобы в Excel была уже готовая, встроенная функция преобразования. Пусть она называется, например, MPG_2_L100KM. К этой функции предъявляются следующие требования:Язык программирования: любой, на ваше усмотрение. Исходный код решения открывать здесь не обязательно, тоже на ваше усмотрение (а вдруг вы лучше меня справитесь с этой задачей, и сразу же на вашу разработку появится коммерческий спрос, автолюбители начнут покупать нарасхват, как горячие пирожки).
- Функция при вызове должна принимать расход в MPG и возвращать значение расхода в л/100 км (точности результата до 2 знаков после запятой будет вполне достаточно).
- Нужно, чтобы пользоваться этой функцией было так же удобно, как любыми стандартными функциями Excel (SIN, COS, MAX, MIN, СРЗНАЧ и т.д.). То есть, чтобы достаточно было нажать на кнопочку fx (см. на рисунке рядом со строкой ввода) и среди стандартных функций в списке появилась нужная нам функция MPG_2_L100KM. Иначе говоря, эта функция должна быть доступна рядовому пользователю (не программисту VBA).
- Нужно, чтобы функция принимала в своем аргументе не только численное значение MPG (например, MPG_2_L100KM(15), но и значение, хранимое по адресу какой-либо ячейки. Например, для ячейки B3 вызов функции будет выглядеть как MPG_2_L100KM(B3).
- Нужно, чтобы эта функция работала на уровне приложения Excel, а не на уровне отдельного документа. То есть, чтобы не надо было ее копировать из одних файлов xls/xlsx в другие. Это значит, функция должна быть в скомпилированной библиотеке, вместе с аналогичными другими полезными функциями (например, PSI_2_KGPCM2 - преобразование давления из фунтов на кв. дюйм в кг/см2 и наоборот). Другими словами, нужно разработать встраиваемый модуль (Add-In) для Excel.
Общие соображения, идеи, советы как это сделать, меня тоже не интересуют. Кому хотелось получить "пищу для ума" - вот она.
Готовый результат должен соответствовать требованиям, указанным выше, и выглядеть примерно так:
Для того, чтобы твоя VBA функция или несколько функций были доступны для любой открытой в данный момент рабочей книге Excel (непосредственно в ячейках на листах), тебе необходимо создать надстройку над Excel (Add-In). Для этого создай новую книгу и сразу сделай Save As установи фильтр Microsoft Excel Add-In (*.xla) придумай имя, затем запускай VBA и наколбась в модуле нужых функций, только внимательно проверь ошибки и откомпилируй проект вручную (Debug->Copile VBAProject). Далее в Project Manager-e можешь изменить имя твоего проекта (какое-нибудь по смыслу). И главное, после того, как все ошибки будут исправлены, в Object Properties объекта ThisWorkbook устанавливаешь IsAddin в True. Сохраняешь проект. Закрываешь Excel. Теперь надо подцепить твой AddIn к Excel-ю, для этого запускаешь его идешь Tools->Add-Ins... давишь Browse и указываешь там этот проект, Ok, Ok. Вот и все!
Если все правильно, то открываешь любую книгу отмечаешь ячейку давишь Insert->Function в окне категорий появится опция User Defined, отметив ее, увидишь свое творчество. Создавая надстройку можешь смело пользоваться всеми Event-ami обьекта ThisWorkbook. Например, можешь создавать при инсталяции и убивать при деинсталяции твоей надстройки любые объекты которые нужны для ее работы (например какой-нибудь CommandBar), вставив нужные строки кода в Event-ы ThisWorkbook -> Workbook_AddinInstall и Workbook_AddinUninstall. Удачи!
http://www.progz.ru/t12932/ ©
как писать функции в редакторе VBA можно узнать здесь клац...
Сообщение отредактировал Dmitriy_N: 15.07.2011, 11:56:02
#118
Отправлено 18.07.2011, 15:41:34
Да, это самый простой способ создания пользовательских функций в Excel на уровне приложения. Кстати, формат *.xla применяется для Excel 97-2003; начиная с Excel 2007, применяется уже более продвинутый формат *.xlam. Файл *.xla/*.xlam фактически является скрытой (невидимой) рабочей книгой, в которой содержится код VBA. После установки и регистрации в качестве надстройки эта рабочая книга с ее кодом VBA доступна для всех других открытых рабочих книг через ссылки на нее.Для того, чтобы твоя VBA функция или несколько функций были доступны для любой открытой в данный момент рабочей книге Excel (непосредственно в ячейках на листах), тебе необходимо создать надстройку над Excel (Add-In). Для этого создай новую книгу и сразу сделай Save As установи фильтр Microsoft Excel Add-In (*.xla) придумай имя, затем запускай VBA и наколбась в модуле нужых функций, только внимательно проверь ошибки и откомпилируй проект вручную (Debug->Copile VBAProject). Далее в Project Manager-e можешь изменить имя твоего проекта (какое-нибудь по смыслу). И главное, после того, как все ошибки будут исправлены, в Object Properties объекта ThisWorkbook устанавливаешь IsAddin в True. Сохраняешь проект. Закрываешь Excel. Теперь надо подцепить твой AddIn к Excel-ю, для этого запускаешь его идешь Tools->Add-Ins... давишь Browse и указываешь там этот проект, Ok, Ok. Вот и все!
Если все правильно, то открываешь любую книгу отмечаешь ячейку давишь Insert->Function в окне категорий появится опция User Defined, отметив ее, увидишь свое творчество. Создавая надстройку можешь смело пользоваться всеми Event-ami обьекта ThisWorkbook. Например, можешь создавать при инсталяции и убивать при деинсталяции твоей надстройки любые объекты которые нужны для ее работы (например какой-нибудь CommandBar), вставив нужные строки кода в Event-ы ThisWorkbook -> Workbook_AddinInstall и Workbook_AddinUninstall. Удачи!
http://www.progz.ru/t12932/ ©
Однако у этого способа ограниченные возможности. Он хорош только для простых функций с вычислениями (например, тот же перевод расхода топлива из MPG в л/100 км или, допустим, расчет скидок при оптовых покупках). А если нужны чуть более сложные функции? Например, как написать на VBA функцию для Excel, которая проверяет, является ли строка "vasya@pupkin.com" правильным адресом e-mail? Или аналогичная функция, проверяющая, является ли строка "www.pupkin.com" правильным URL? Можно ли это сделать в VBA? Скорее всего, нет. В языке VBA нет встроенной поддержки регулярных выражений. А если все же да, то для этого нужны очень специальные "пляски с бубном".
Нет уж, изучайте сами. Причины указаны выше.как писать функции в редакторе VBA можно узнать здесь клац...
Сообщение отредактировал Visual1: 18.07.2011, 17:39:15
#119
Отправлено 18.07.2011, 17:15:26
День добрый всем, пример создания собственных функций в excel довольно полезная вещь, малой кровью и потратив не так уж много времени можно создать полезные функции для бухгалтеров или финансистов своей конторы. Примеры достаточно простые и понятные, надеюсь создание Add-in ов для excel я будет полезно кому нибудь в его работе. Насчет возможностей VBA зря Вы так, на VBA можно так же делать вызов API функций виндовс, работать с реестром ну а тут в принципе открывается достаточно широкое поле деятельности для шаловливых ручонок . Add-in можно написать в Visual Studio на C# или VB это как кому больше нравится, но здесь опять же нужна сама среда Visual Studio, а так уже все есть .....
Нет уж, изучайте сами. Причины указаны выше.
Сообщение отредактировал Dmitriy_N: 18.07.2011, 17:19:40
#120
Отправлено 18.07.2011, 19:08:44
И как это (вызов API функций виндовс и работа с реестром в VBA) связано с моим вопросом о создании в VBA функций для Excel с проверкой регулярных выражений? Вы мой вопрос проигнорировали. Ваши слова насчет чьих-то там "шаловливых ручонок" тоже ни к чему. Такие функции вовсе не для "шаловливых ручонок", они реально пригодились бы многим пользователям Excel. Например, довольно часто требуется заполнить или обновить рабочую страницу Excel информацией о компаниях - деловых партнерах. У большинства даже небольших компаний сейчас в реквизитах указан адрес e-mail, у многих есть адрес веб-страницы. Предпочитаете проверять множество адресов эл. почты и web-страниц вручную?Насчет возможностей VBA зря Вы так, на VBA можно так же делать вызов API функций виндовс, работать с реестром ну а тут в принципе открывается достаточно широкое поле деятельности для шаловливых ручонок .
Именно к этому я и веду разговор.Add-in можно написать в Visual Studio на C# или VB это как кому больше нравится,
Это для пользователей Excel (продвинутых и не очень) уже все есть. А для программистов так или иначе потребуется среда Visual Studio. В редакции Express она доступна на сайте MS бесплатно (не реклама!). Искренне Ваш, К.О.но здесь опять же нужна сама среда Visual Studio, а так уже все есть .
Количество пользователей, читающих эту тему: 0
пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0