Страница: 1 | 2 |
Вопрос: нужна помощь!
Добавлено: 14.08.07 11:50
Автор вопроса: Piastra | Web-сайт:
Здравствуйте, подскажите пожалуйста как можно зделать так, чтобы при нажатии кнопки макроса в 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