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

Вход

Регистрация

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

 

= Мир MS Excel/VBA макрос для работы с массивом ячеек - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA макрос для работы с массивом ячеек (Макросы/Sub)
VBA макрос для работы с массивом ячеек
Инженер Дата: Воскресенье, 28.02.2016, 21:03 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго вечера.
Помогите пожалуйста усовершенствовать макрос.

Текст задания в самом файле.
Постигаем сию науку с сыном-студентом совместно. В принципе, макрос работает но на 1 столбец.
В данном примере есть некоторые данные в столбце А. Выбираем их. Аль+Ф8. Выполнить. Вводим число и в столбце В получается ответ.
Преподаватель хочет, чтобы макрос работал не только с 1м столбцом, а с диапазоном.
Предполагаю, что в данном случае результат удобнее помещать не справа , а снизу выделяемого диапазона для наглядности (разрешено преподавателем).

Буду благодарен, продвигаемся медленно, а скоро сдавать.
Благодарность при успешной помощи могу переслать на указанный телефон.

Спасибо.
К сообщению приложен файл: 10.xlsm(17Kb)
 
Ответить
СообщениеДоброго вечера.
Помогите пожалуйста усовершенствовать макрос.

Текст задания в самом файле.
Постигаем сию науку с сыном-студентом совместно. В принципе, макрос работает но на 1 столбец.
В данном примере есть некоторые данные в столбце А. Выбираем их. Аль+Ф8. Выполнить. Вводим число и в столбце В получается ответ.
Преподаватель хочет, чтобы макрос работал не только с 1м столбцом, а с диапазоном.
Предполагаю, что в данном случае результат удобнее помещать не справа , а снизу выделяемого диапазона для наглядности (разрешено преподавателем).

Буду благодарен, продвигаемся медленно, а скоро сдавать.
Благодарность при успешной помощи могу переслать на указанный телефон.

Спасибо.

Автор - Инженер
Дата добавления - 28.02.2016 в 21:03
KuklP Дата: Воскресенье, 28.02.2016, 21:38 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2022
Репутация: 439 ±
Замечаний: 20% ±

Справа:
[vba]
Код
Sub qqq()
    Dim s As Double, a, i&, j&
    s = Val(InputBox("Введите данные", "Ввод данных", _
                        "Значение по умолчанию", 200, 200))
    a = Selection.Value
    For i = 1 To UBound(a)
        For j = 1 To UBound(a, 2)
            If a(i, j) > s Then a(i, j) = a(i, j) / s
        Next
    Next
    Selection(1).Offset(, Selection.Columns.Count + 3).Resize(UBound(a), UBound(a, 2)) = a
End Sub
[/vba]


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеСправа:
[vba]
Код
Sub qqq()
    Dim s As Double, a, i&, j&
    s = Val(InputBox("Введите данные", "Ввод данных", _
                        "Значение по умолчанию", 200, 200))
    a = Selection.Value
    For i = 1 To UBound(a)
        For j = 1 To UBound(a, 2)
            If a(i, j) > s Then a(i, j) = a(i, j) / s
        Next
    Next
    Selection(1).Offset(, Selection.Columns.Count + 3).Resize(UBound(a), UBound(a, 2)) = a
End Sub
[/vba]

Автор - KuklP
Дата добавления - 28.02.2016 в 21:38
Kuzmich Дата: Воскресенье, 28.02.2016, 22:07 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 238
Репутация: 43 ±
Замечаний: 0% ±

Excel 2003
Цитата
макрос работал не только с 1м столбцом, а с диапазоном

[vba]
Код

Sub Massiv()
Dim MyArr
Dim s As Integer, i As Integer
Dim Rng As Range
  Set Rng = Application.InputBox(prompt:="Выделите диапазон", Type:=8)
  MyArr = Rng.Value
  s = Application.InputBox(prompt:="Введите число-делитель", Type:=1)
  For i = 1 To UBound(MyArr, 1)
      For j = 1 To UBound(MyArr, 2)
       If MyArr(i, j) > s Then
         MyArr(i, j) = MyArr(i, j) / s
       End If
      Next
  Next
    Range("A23").Resize(UBound(MyArr, 1), UBound(MyArr, 2)) = MyArr
End Sub

[/vba]
 
Ответить
Сообщение
Цитата
макрос работал не только с 1м столбцом, а с диапазоном

[vba]
Код

Sub Massiv()
Dim MyArr
Dim s As Integer, i As Integer
Dim Rng As Range
  Set Rng = Application.InputBox(prompt:="Выделите диапазон", Type:=8)
  MyArr = Rng.Value
  s = Application.InputBox(prompt:="Введите число-делитель", Type:=1)
  For i = 1 To UBound(MyArr, 1)
      For j = 1 To UBound(MyArr, 2)
       If MyArr(i, j) > s Then
         MyArr(i, j) = MyArr(i, j) / s
       End If
      Next
  Next
    Range("A23").Resize(UBound(MyArr, 1), UBound(MyArr, 2)) = MyArr
End Sub

[/vba]

Автор - Kuzmich
Дата добавления - 28.02.2016 в 22:07
StoTisteg Дата: Воскресенье, 28.02.2016, 22:15 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Тогда уж не
[vba]
Код

    If MyArr(i, j) > s Then
         MyArr(i, j) = MyArr(i, j) / s
    End If
[/vba]
а
[vba]
Код

    MyArr(i, j)=Iif(MyArr(i, j) > s, MyArr(i, j) / s, MyArr(i, j))
[/vba]
чтобы у препода совсем никаких сомнений не осталось yes


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеТогда уж не
[vba]
Код

    If MyArr(i, j) > s Then
         MyArr(i, j) = MyArr(i, j) / s
    End If
[/vba]
а
[vba]
Код

    MyArr(i, j)=Iif(MyArr(i, j) > s, MyArr(i, j) / s, MyArr(i, j))
[/vba]
чтобы у препода совсем никаких сомнений не осталось yes

Автор - StoTisteg
Дата добавления - 28.02.2016 в 22:15
Инженер Дата: Понедельник, 29.02.2016, 21:58 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо большое. Все работает. hands
 
Ответить
СообщениеСпасибо большое. Все работает. hands

Автор - Инженер
Дата добавления - 29.02.2016 в 21:58
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA макрос для работы с массивом ячеек (Макросы/Sub)
Страница 1 из 11
Поиск:

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