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

Вход

Регистрация

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

 

= Мир MS Excel/Код VBA, создание формулы из чисел по маске - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Код VBA, создание формулы из чисел по маске
voffka Дата: Вторник, 20.05.2014, 16:12 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день. Помогите с написанием кода.
В таблице (это выгрузка из программы) есть диапазон ячеек с разными данными (D2; F2; H2 ....)
Суть проблемы: нужно написать код макроса на создание формул (ы) вида (E4=E2/ i ) число i это число из диапазона
(D2; F2; H2 ....) которое нужно выбрать по маске (II)* или (III)*
К сообщению приложен файл: 7858403.xls (18.5 Kb)
 
Ответить
СообщениеДобрый день. Помогите с написанием кода.
В таблице (это выгрузка из программы) есть диапазон ячеек с разными данными (D2; F2; H2 ....)
Суть проблемы: нужно написать код макроса на создание формул (ы) вида (E4=E2/ i ) число i это число из диапазона
(D2; F2; H2 ....) которое нужно выбрать по маске (II)* или (III)*

Автор - voffka
Дата добавления - 20.05.2014 в 16:12
doober Дата: Вторник, 20.05.2014, 20:28 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 995
Репутация: 345 ±
Замечаний: 0% ±

Excel 2010
Верно?
К сообщению приложен файл: 3218642.xls (34.0 Kb)


 
Ответить
СообщениеВерно?

Автор - doober
Дата добавления - 20.05.2014 в 20:28
voffka Дата: Вторник, 20.05.2014, 22:47 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
doober ваше решение это просто БОМБА, спасибо огромное и + с меня!

потому как у меня кроме варианта как перебрать значения с заменой ненужного ничего не получилось, вот мой вариант:
[vba]
Код


      Range("D20:BE20").Select
      Selection.Replace What:="(II)*(III)", Replacement:=" ", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     Selection.Replace What:="(II)*", Replacement:=" ", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     Selection.Replace What:="(III)", Replacement:=" ", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     Selection.Replace What:="(IV)*", Replacement:=" ", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     Selection.NumberFormat = "#,##0.0"
[/vba]
 
Ответить
Сообщениеdoober ваше решение это просто БОМБА, спасибо огромное и + с меня!

потому как у меня кроме варианта как перебрать значения с заменой ненужного ничего не получилось, вот мой вариант:
[vba]
Код


      Range("D20:BE20").Select
      Selection.Replace What:="(II)*(III)", Replacement:=" ", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     Selection.Replace What:="(II)*", Replacement:=" ", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     Selection.Replace What:="(III)", Replacement:=" ", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     Selection.Replace What:="(IV)*", Replacement:=" ", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False
     Selection.NumberFormat = "#,##0.0"
[/vba]

Автор - voffka
Дата добавления - 20.05.2014 в 22:47
RAN Дата: Вторник, 20.05.2014, 23:26 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Код
=Мяв(D2;E2;"(II)")


[vba]
Код
Function Мяв(r As Range, rr As Range, mask As String)
     Dim strc, i&
     strc = Split(r, vbLf)
     For i = 0 To UBound(strc)
         If InStr(strc(i), mask) Then
             Мяв = CDbl(rr) / CDbl(Replace(Mid$(strc(i), InStr(strc(i), ")") + 2), " ", ""))
             Exit Function
         End If
     Next
End Function
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Код
=Мяв(D2;E2;"(II)")


[vba]
Код
Function Мяв(r As Range, rr As Range, mask As String)
     Dim strc, i&
     strc = Split(r, vbLf)
     For i = 0 To UBound(strc)
         If InStr(strc(i), mask) Then
             Мяв = CDbl(rr) / CDbl(Replace(Mid$(strc(i), InStr(strc(i), ")") + 2), " ", ""))
             Exit Function
         End If
     Next
End Function
[/vba]

Автор - RAN
Дата добавления - 20.05.2014 в 23:26
voffka Дата: Вторник, 20.05.2014, 23:39 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо RAN

p.s. doober, странным образом получается, что ваша формула работает только в случае установки в ячейки шрифта Callibri при ручном наборе, по другому маску не подхватывает и результат 0
 
Ответить
СообщениеСпасибо RAN

p.s. doober, странным образом получается, что ваша формула работает только в случае установки в ячейки шрифта Callibri при ручном наборе, по другому маску не подхватывает и результат 0

Автор - voffka
Дата добавления - 20.05.2014 в 23:39
doober Дата: Среда, 21.05.2014, 00:02 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 995
Репутация: 345 ±
Замечаний: 0% ±

Excel 2010
При чем здесь шрифт,вы определили 2 и 3 символа английская буква I код символа 73

PS:Март прошел,пора менять имена функций


 
Ответить
СообщениеПри чем здесь шрифт,вы определили 2 и 3 символа английская буква I код символа 73

PS:Март прошел,пора менять имена функций

Автор - doober
Дата добавления - 21.05.2014 в 00:02
voffka Дата: Среда, 21.05.2014, 12:34 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Я извиняюсь, на работе excel 2007 всё работает адекватно, а дома excel 2013.
Код формулы я добавил в надстройку, почему то не работала формула,
формулу писал от руки в ячейку, результат 0, попробовал менять шрифт - ответ получил только с Callibri.
 
Ответить
СообщениеЯ извиняюсь, на работе excel 2007 всё работает адекватно, а дома excel 2013.
Код формулы я добавил в надстройку, почему то не работала формула,
формулу писал от руки в ячейку, результат 0, попробовал менять шрифт - ответ получил только с Callibri.

Автор - voffka
Дата добавления - 21.05.2014 в 12:34
  • Страница 1 из 1
  • 1
Поиск:

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