Страница: 1 | 2 |
Вопрос: нужна помощь!
Добавлено: 14.08.07 11:50
Автор вопроса:
Piastra | Web-сайт: no
Здравствуйте, подскажите пожалуйста как можно зделать так, чтобы при нажатии кнопки макроса в excel - данные определённых столбцов умножались на определённую ячейку??
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
bi-lya
![]()
Вопросов: 1
Ответов: 125
Профиль | | #1
Добавлено: 14.08.07 15:32
Сервис - Макрос - Начать запись. Делаем, что нужно, останавливаем. Приспосабливаем кнопку. По необходимости корректируем код
Номер ответа: 2
Автор ответа:
Piastra
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 6
Web-сайт:
Профиль | | #2
Добавлено: 15.08.07 12:19
.. если бы я знала что нужно.. вопросы бы не задавала))
а можно по подробнее что нужно написать в программе?
Номер ответа: 3
Автор ответа:
bi-lya
![]()
Вопросов: 1
Ответов: 125
Профиль | | #3
Добавлено: 15.08.07 12:50
Так я ж вам и советую самый доступный способ - записать в макрорекордер и смотреть как это работает
Номер ответа: 4
Автор ответа:
Piastra
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 6
Web-сайт:
Профиль | | #4
Добавлено: 15.08.07 14:39
.. ну представьте, что я раньше никогда не работала с макросами..
Макросы - имя макроса Книга1 .. что дальше? мне нужна сама программа: как это записать, чтобы работало.
Номер ответа: 5
Автор ответа:
bi-lya
![]()
Вопросов: 1
Ответов: 125
Профиль | | #5
Добавлено: 15.08.07 15:03
А вообще в Ехселе вы знаете как это делать - умножить ячейки столбца на какую-либо ячейку? Это в макрос и запишите для начала
Номер ответа: 6
Автор ответа:
Andrew_nik
![]()
![]()
![]()
Вопросов: 15
Ответов: 30
Профиль | | #6
Добавлено: 15.08.07 15:24
Измени в соответствии с тем, как тебе это надо и пользуйся
Sub Macro()
Dim i&, A&, B&
' Вставляем в столбцец следующие значения
Range("B2"
.Value = 5
Range("B3"
.Value = 10
Range("B4"
.Value = 15
Range("B5"
.Value = 20
' Вставляем в ячейку Е2 значение - на что будет умножать
Range("E2"
.Value = 120
' Присваиваем ячейкам в столбце С значения, равные значению в толбце "В" * "E2"
For i = 2 To 5
A = Range("B" & i).Value
B = Range("E2"
.Value
Range("c" & i).Value = A * B
Next
End Sub
Номер ответа: 7
Автор ответа:
Piastra
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 6
Web-сайт:
Профиль | | #7
Добавлено: 15.08.07 16:06
.. я так понимаю, это формируется новый массив? мне нужно, чтобы данные изменялись непосредственно в одном и том же..
столбцы С,F,I,L,O,R,U,X,AA,AD,AG,AI (диапозон 9:37) должны умножаться на ячейку D4 , а столбцы AM,AP,AS,AV,AY,BB,BE,BH,BK,BN,BQ,BS (диапозон тот же) на ячейку I4. Это нужно записывать как Range("C9:C37"
.Value = ?
.. и спасибо за помощь)
Номер ответа: 8
Автор ответа:
Andrew_nik
![]()
![]()
![]()
Вопросов: 15
Ответов: 30
Профиль | | #8
Добавлено: 15.08.07 18:18
Вот так можно перемножить первый диапазон
С,F,I,L,O,R,U,X,AA,AD,AG,AI (диапозон 9:37) на D4.
По аналогии так же и второй...
Sub Macro_f(col As String)
Dim j&, ColValue&, myConst&
For j = 9 To 37
'----Здесь - устанавливаем адрес константы, на которую будем уиножать
myConst = Range("
4"
.Value
'----------------------------------------
ColValue = Range(col & j).Value
Range(col & j).Value = ColValue * myConst
Next
End Sub
Sub Multiply()
Dim col As String
col = "C"
Macro_f (col)
col = "F"
Macro_f (col)
col = "I"
Macro_f (col)
col = "L"
Macro_f (col)
col = "O"
Macro_f (col)
col = "R"
Macro_f (col)
col = "U"
Macro_f (col)
col = "XX"
Macro_f (col)
col = "AA"
Macro_f (col)
col = "AD"
Macro_f (col)
col = "AG"
Macro_f (col)
col = "AI"
Macro_f (col)
End Sub
Номер ответа: 9
Автор ответа:
Andrew_nik
![]()
![]()
![]()
Вопросов: 15
Ответов: 30
Профиль | | #9
Добавлено: 16.08.07 10:05
И еще ...
Sub SubMultiply(Col As String, ConstAdr As String)
Dim j&, ColValue&, myConst&
' Col - название столбца где, находятся данные
' ConstAdr - адрес постоянной, на которую надо умножать
For j = 9 To 37
myConst = Range(ConstAdr).Value
ColValue = Range(Col & j).Value
Range(Col & j).Value = ColValue * myConst
Next
End Sub
Sub dd()
SubMultiply "C", "
4"
SubMultiply "F", "
4"
SubMultiply "I", "
4"
SubMultiply "L", "
4"
SubMultiply "O", "
4"
SubMultiply "R", "
4"
SubMultiply "U", "
4"
SubMultiply "X", "
4"
SubMultiply "AA", "
4"
SubMultiply "AD", "
4"
SubMultiply "AG", "
4"
SubMultiply "AI", "
4"
End Sub
Номер ответа: 10
Автор ответа:
GenyaA
![]()
![]()
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #10
Добавлено: 16.08.07 11:01
Решение без цикла:
Dim myRange As Range, r As Range, myMult As Range
With ActiveSheet
'столбцы С,F,I,L,O,R,U,X,AA,AD,AG,AI (диапозон 9:37) D4
Set myMult = .Range("
4"
Set r = .Range("9:37"
Set myRange = Union( _
Intersect(.Range("C:C"
, r), _
Intersect(.Range("F:F"
, r), _
Intersect(.Range("I:I"
, r), _
Intersect(.Range("L:L"
, r), _
Intersect(.Range("O:O"
, r), _
Intersect(.Range("R:R"
, r), _
Intersect(.Range("U:U"
, r), _
Intersect(.Range("X:X"
, r), _
Intersect(.Range("AA:AA"
, r), _
Intersect(.Range("AD:AD"
, r), _
Intersect(.Range("AG:AG"
, r), _
Intersect(.Range("AI:AI"
, r))
myMult.Copy
myRange.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
'столбцы AM,AP,AS,AV,AY,BB,BE,BH,BK,BN,BQ,BS (диапозон тот же) на ячейку I4.
Set myMult = .Range("I4"
Set myRange = Union( _
Intersect(.Range("AM:AM"
, r), _
Intersect(.Range("AP:AP"
, r), _
Intersect(.Range("AS:AS"
, r), _
Intersect(.Range("AV:AV"
, r), _
Intersect(.Range("AY:AY"
, r), _
Intersect(.Range("BB:BB"
, r), _
Intersect(.Range("BE:BE"
, r), _
Intersect(.Range("BH:BH"
, r), _
Intersect(.Range("BK:BK"
, r), _
Intersect(.Range("BN:BN"
, r), _
Intersect(.Range("BQ:BQ"
, r), _
Intersect(.Range("BS:BS"
, r))
myMult.Copy
myRange.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
End With
End Sub
Номер ответа: 11
Автор ответа:
Piastra
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 6
Web-сайт:
Профиль | | #11
Добавлено: 16.08.07 13:09
myRange.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
вот эта строка почему - то не идёт.. пишет, что метод PasteSpecial из класса Range завершён не верно...
 
спасибо за помощь)
Номер ответа: 12
Автор ответа:
Piastra
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 6
Web-сайт:
Профиль | | #12
Добавлено: 16.08.07 13:13
вот!, как раз этого мне и не хватало )) .. и ещё.. какое должно быть завершение первой операции? для того, чтобы начать считать вторую часть столбцов?
End With
End Sub ?
Номер ответа: 13
Автор ответа:
GenyaA
![]()
![]()
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #13
Добавлено: 16.08.07 13:53
Странно.. у меня все отработалось на примере листа, заполненного двойками... может быть у Вас умножаемые данные на листе не все числовые?
Никакой... обе операции делаются внутри одного блока With ActiveSheet.
Номер ответа: 14
Автор ответа:
Piastra
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 6
Web-сайт:
Профиль | | #14
Добавлено: 16.08.07 16:40
.. всё равно что - то не получается. Дело в том, что некоторые столбцы имеют нулевое значение.. как вы думаете будет проще, если я вышлю вам файл с массивом?
Номер ответа: 15
Автор ответа:
GenyaA
![]()
![]()
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #15
Добавлено: 16.08.07 17:02
Нулевые значения не должны мешать... могли помешать пустые ячейки... но я не уверен...
шлите в упакованном (сжатом) виде...
genyaa[coбачkа]nm.ru