Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Ввод данных в ячейки функции через макросы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Ввод данных в ячейки функции через макросы (Макросы Sub)
Ввод данных в ячейки функции через макросы
alexandr_fors Дата: Суббота, 02.11.2013, 17:28 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый вечер.
Друзья нашел одну интересную задачу, написать её тут не могу потому что там функция, я её в ворд закинул.
Это дал мне препод, так как я отличник в группе, но решить её я так и не смог, а идти к ней чтобы помогла стыдно.
Буду рад любой подсказке.
К сообщению приложен файл: 2x.doc (22.0 Kb)


Сообщение отредактировал alexandr_fors - Суббота, 02.11.2013, 17:52
 
Ответить
СообщениеДобрый вечер.
Друзья нашел одну интересную задачу, написать её тут не могу потому что там функция, я её в ворд закинул.
Это дал мне препод, так как я отличник в группе, но решить её я так и не смог, а идти к ней чтобы помогла стыдно.
Буду рад любой подсказке.

Автор - alexandr_fors
Дата добавления - 02.11.2013 в 17:28
RAN Дата: Суббота, 02.11.2013, 17:47 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А на мове на русскоязычный форум задание выкладывать не стыдно?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА на мове на русскоязычный форум задание выкладывать не стыдно?

Автор - RAN
Дата добавления - 02.11.2013 в 17:47
alexandr_fors Дата: Суббота, 02.11.2013, 17:53 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
RAN,
Все сделано)Извините, как-то не подумал, я сам то вырос в России , а не давно переехали в Украину, так вот приходиться изучать и Украинский язык :)
К сообщению приложен файл: 4712022.doc (22.0 Kb)


Сообщение отредактировал alexandr_fors - Суббота, 02.11.2013, 17:53
 
Ответить
СообщениеRAN,
Все сделано)Извините, как-то не подумал, я сам то вырос в России , а не давно переехали в Украину, так вот приходиться изучать и Украинский язык :)

Автор - alexandr_fors
Дата добавления - 02.11.2013 в 17:53
RAN Дата: Суббота, 02.11.2013, 18:17 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Дывлюсь на задачу. :)
так как я отличник в группе

А может, все же двоечник?
Вся UDF - одна строчка и один оператор.

Подсказываю, какой
[vba]
Код
Iif
[/vba]

Цитата
рассчитать ее значение для х = -27, x = 0, x = 54

А для UDF не фиолетово-го ли, чему х равен?

Цитата
Предусмотреть введение входных данных из ячеек и размещения результатов в ячейках табличного редактора Excel

Так для UDF это, вроде как, по умолчанию предусмотрено.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Суббота, 02.11.2013, 18:19
 
Ответить
СообщениеДывлюсь на задачу. :)
так как я отличник в группе

А может, все же двоечник?
Вся UDF - одна строчка и один оператор.

Подсказываю, какой
[vba]
Код
Iif
[/vba]

Цитата
рассчитать ее значение для х = -27, x = 0, x = 54

А для UDF не фиолетово-го ли, чему х равен?

Цитата
Предусмотреть введение входных данных из ячеек и размещения результатов в ячейках табличного редактора Excel

Так для UDF это, вроде как, по умолчанию предусмотрено.

Автор - RAN
Дата добавления - 02.11.2013 в 18:17
Hugo Дата: Суббота, 02.11.2013, 18:52 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
Берёте за образец любую UDF (это если вообще не знаете, что там и как), далее вникаете как это работает, далее меняете её код на свой.
И действительно, всё можно уместить в одну строку.
Но можно для простоты написать 5 строк, используя if then else end if


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеБерёте за образец любую UDF (это если вообще не знаете, что там и как), далее вникаете как это работает, далее меняете её код на свой.
И действительно, всё можно уместить в одну строку.
Но можно для простоты написать 5 строк, используя if then else end if

Автор - Hugo
Дата добавления - 02.11.2013 в 18:52
alexandr_fors Дата: Суббота, 02.11.2013, 18:53 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
RAN,
нет, не двоечник :) Просто иногда трудно с Украинским языком.
Я же еще в школе учусь и для меня самому трудно разобраться в этих макросах.
Сможешь мне помочь завтра или сегодня там?
 
Ответить
СообщениеRAN,
нет, не двоечник :) Просто иногда трудно с Украинским языком.
Я же еще в школе учусь и для меня самому трудно разобраться в этих макросах.
Сможешь мне помочь завтра или сегодня там?

Автор - alexandr_fors
Дата добавления - 02.11.2013 в 18:53
alexandr_fors Дата: Суббота, 02.11.2013, 18:59 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Hugo, Думаете прокатит?
Просто я как бы чайник в этом деле вникаю вторые сутки, завтра будут третьи:( и блин с этими Макросами вообще туго.Еще скоро и на олимпиаду ехать :( Все так навалилось:(
Можете помочь мне разобраться в этой задаче?
 
Ответить
СообщениеHugo, Думаете прокатит?
Просто я как бы чайник в этом деле вникаю вторые сутки, завтра будут третьи:( и блин с этими Макросами вообще туго.Еще скоро и на олимпиаду ехать :( Все так навалилось:(
Можете помочь мне разобраться в этой задаче?

Автор - alexandr_fors
Дата добавления - 02.11.2013 в 18:59
Hugo Дата: Суббота, 02.11.2013, 19:18 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
Для начала найдите код или файл с любой UDF.
Хотя код например вот:
[vba]
Код
Function sp1s(Txt$, numstr&)
       Dim a
       a = Split(Txt, ChrW(10))
       sp1s = a(numstr - 1)
End Function
[/vba]
Что делает - не важно.
Важно то, что он что-то делает с аргументом Txt, результат выводит в ячейку, куда введена эта функция (numstr для Вашей задачи лишнее).
Вот по этим исходным данным и стройте свой код :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеДля начала найдите код или файл с любой UDF.
Хотя код например вот:
[vba]
Код
Function sp1s(Txt$, numstr&)
       Dim a
       a = Split(Txt, ChrW(10))
       sp1s = a(numstr - 1)
End Function
[/vba]
Что делает - не важно.
Важно то, что он что-то делает с аргументом Txt, результат выводит в ячейку, куда введена эта функция (numstr для Вашей задачи лишнее).
Вот по этим исходным данным и стройте свой код :)

Автор - Hugo
Дата добавления - 02.11.2013 в 19:18
alexandr_fors Дата: Суббота, 02.11.2013, 19:31 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Hugo, <_< сейчас буду пытаться.
Спасибо) :)
 
Ответить
СообщениеHugo, <_< сейчас буду пытаться.
Спасибо) :)

Автор - alexandr_fors
Дата добавления - 02.11.2013 в 19:31
Hugo Дата: Суббота, 02.11.2013, 19:46 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну пока Вы пытаетесь, я набросал :)
[vba]
Код
Function N(x As Double)
        Select Case True
            Case x <= 1    'при x <=1
                N = 2 * x - 54
            Case x > 1    'при x >1
                N = Tan(x + 12)
        End Select
End Function
[/vba]
Пришлось погуглить https://www.google.lv/search?....1%20vba

А вот как выше RAN подсказывал:
[vba]
Код
Function N(x As Double)
       N = IIf(x <= 1, 2 * x - 54, Tan(x + 12))
End Function
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНу пока Вы пытаетесь, я набросал :)
[vba]
Код
Function N(x As Double)
        Select Case True
            Case x <= 1    'при x <=1
                N = 2 * x - 54
            Case x > 1    'при x >1
                N = Tan(x + 12)
        End Select
End Function
[/vba]
Пришлось погуглить https://www.google.lv/search?....1%20vba

А вот как выше RAN подсказывал:
[vba]
Код
Function N(x As Double)
       N = IIf(x <= 1, 2 * x - 54, Tan(x + 12))
End Function
[/vba]

Автор - Hugo
Дата добавления - 02.11.2013 в 19:46
RAN Дата: Суббота, 02.11.2013, 20:08 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Игорь, не так! :p
[vba]
Код
Function N(x As Double)
     N = IIf(x > 1, Tan(x + 12), 2 * x - 54)
End Function
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеИгорь, не так! :p
[vba]
Код
Function N(x As Double)
     N = IIf(x > 1, Tan(x + 12), 2 * x - 54)
End Function
[/vba]

Автор - RAN
Дата добавления - 02.11.2013 в 20:08
Serge_007 Дата: Суббота, 02.11.2013, 20:16 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Пришлось погуглить
Игорь, а можно было набрать заветные три буквы в поиск по сайту :D

К сообщению приложен файл: 9668961.gif (11.2 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Пришлось погуглить
Игорь, а можно было набрать заветные три буквы в поиск по сайту :D


Автор - Serge_007
Дата добавления - 02.11.2013 в 20:16
Hugo Дата: Суббота, 02.11.2013, 20:17 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
Да, так правильнее. На один символ короче :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеДа, так правильнее. На один символ короче :)

Автор - Hugo
Дата добавления - 02.11.2013 в 20:17
MCH Дата: Суббота, 02.11.2013, 20:21 | Сообщение № 14
Группа: Админы
Ранг: Старожил
Сообщений: 2002
Репутация: 751 ±
Замечаний: ±

а как же If Then Else?

[vba]
Код
Function N(x As Double) As Double
      If x <= 1 Then
          N = 2 * x - 54
      Else
          N = Tan(x + 12)
      End If
End Function
[/vba]
или
[vba]
Код
Function N(x As Double) As Double
      If x <= 1 Then N = 2 * x - 54 Else N = Tan(x + 12)
End Function
[/vba]

при этом IIf не всегда может заменять If Then Else в подобных ситуациях, дело в том, что выражения в IIf вычисляются всегда, независимо от условия, и затем подставляется то, какое необходимо в зависимости от значения логического выражения, это как минимум уменьшение скорости, а как максимум может привести к возникновению ошибки.

при такой записи возникает ошибка при нулевых и отрицательных значениях x:
[vba]
Код
Function f(x As Double) As Double
      f = IIf(x >= 0, Sqr(x), 1 / x)
End Function
[/vba]
при такой, ошибки не возникает:
[vba]
Код
Function f(x As Double) As Double
      If x >= 0 Then f = Sqr(x) Else f = 1 / x
End Function
[/vba]


Сообщение отредактировал MCH - Суббота, 02.11.2013, 20:24
 
Ответить
Сообщениеа как же If Then Else?

[vba]
Код
Function N(x As Double) As Double
      If x <= 1 Then
          N = 2 * x - 54
      Else
          N = Tan(x + 12)
      End If
End Function
[/vba]
или
[vba]
Код
Function N(x As Double) As Double
      If x <= 1 Then N = 2 * x - 54 Else N = Tan(x + 12)
End Function
[/vba]

при этом IIf не всегда может заменять If Then Else в подобных ситуациях, дело в том, что выражения в IIf вычисляются всегда, независимо от условия, и затем подставляется то, какое необходимо в зависимости от значения логического выражения, это как минимум уменьшение скорости, а как максимум может привести к возникновению ошибки.

при такой записи возникает ошибка при нулевых и отрицательных значениях x:
[vba]
Код
Function f(x As Double) As Double
      f = IIf(x >= 0, Sqr(x), 1 / x)
End Function
[/vba]
при такой, ошибки не возникает:
[vba]
Код
Function f(x As Double) As Double
      If x >= 0 Then f = Sqr(x) Else f = 1 / x
End Function
[/vba]

Автор - MCH
Дата добавления - 02.11.2013 в 20:21
RAN Дата: Суббота, 02.11.2013, 20:37 | Сообщение № 15
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Во разошлись! :)
Тады так
[vba]
Код
Function ком#(x#)
ком = (x <= 1) * (2 * x - 54) - (x > 1) * Tan(x + 12)
End Function
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВо разошлись! :)
Тады так
[vba]
Код
Function ком#(x#)
ком = (x <= 1) * (2 * x - 54) - (x > 1) * Tan(x + 12)
End Function
[/vba]

Автор - RAN
Дата добавления - 02.11.2013 в 20:37
MCH Дата: Суббота, 02.11.2013, 20:49 | Сообщение № 16
Группа: Админы
Ранг: Старожил
Сообщений: 2002
Репутация: 751 ±
Замечаний: ±

Тады так

Андрей, не так
[vba]
Код
ком = (x <= 1) * (54 - 2 * x) - (x > 1) * Tan(x + 12)
[/vba]
или
[vba]
Код
ком = -(x <= 1) * (2 * x - 54) - (x > 1) * Tan(x + 12)
[/vba]
 
Ответить
Сообщение
Тады так

Андрей, не так
[vba]
Код
ком = (x <= 1) * (54 - 2 * x) - (x > 1) * Tan(x + 12)
[/vba]
или
[vba]
Код
ком = -(x <= 1) * (2 * x - 54) - (x > 1) * Tan(x + 12)
[/vba]

Автор - MCH
Дата добавления - 02.11.2013 в 20:49
RAN Дата: Суббота, 02.11.2013, 20:56 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Да, недоглядел.
Сначала "-" был во второй части. Поправил. А то, что он перепрыгнул в первую, не заметил.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДа, недоглядел.
Сначала "-" был во второй части. Поправил. А то, что он перепрыгнул в первую, не заметил.

Автор - RAN
Дата добавления - 02.11.2013 в 20:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Ввод данных в ячейки функции через макросы (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!