powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставка функции персчета массива в счетчик
13 сообщений из 13, страница 1 из 1
Вставка функции персчета массива в счетчик
    #39711617
Alkhimik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые форумчане!
У меня имеется массив, который изменяется при помощи формул, записанных в ячейках, счетчиком. В приведенном примере в ячейке А1 работает счетчик, а в ячейках С6:С16 производится вычисление, то есть умножение ячеек F6:F16 с округлением до 0 на показания счетчика. Как можно записать эту формулу


=ОКРУГЛ($A$1*F6;0)

в макрос счетчика:


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub Counter()

Dim CounterCell As Range, i As Long
Set CounterCell = ActiveSheet.Range("A1")
CounterCell.Value = 0
Application.ScreenUpdating = False
Do While CounterCell.Value < 1000000#
    CounterCell.Value = CounterCell.Value + 0.01
        
Loop

Application.ScreenUpdating = True

End Sub



чтобы персчет призводился при каждом изменении счетчика
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39711711
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Round(Number, [NumDigitsAfterDecimal As Long])
Это ОКРУГЛ на VB
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39711724
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
Do While CounterCell.Value < 1000000#
    CounterCell.Value = CounterCell.Value + 0.01
    ActiveSheet.Cells(6, 3) = Round(CounterCell.Value * ActiveSheet.Cells(6, 6), 0)
     ' остальные ячейки сами допишите по аналогии или цикл какой сделаете.....
    
Loop
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39711731
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только данный цикл сам по себе будет бессмысленным, можно сразу присвоить конечные значения счетчику и ячейкам
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39711743
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТолько данный цикл сам по себе будет бессмысленным, можно сразу присвоить конечные значения счетчику и ячейкам
Ага..... полностью согласен.....
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39712319
Alkhimik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное!!!!! Воспользуюсь советами. Вы профи!
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39712347
Alkhimik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет бессмысленности цикла не согласен. Там у меня много разных условий и мне необходимо построить в конце-концов график показаний счетчика за весь цикл, при которых выполнены все условия. Но это лирика. Проблема в том, что в примере я дал только 10 строчек, а у меня их больше 3000, поэтому записать все ячейки в код бессмысленно. Больше времени уйдет, чем рассчет программы. А вот как записать в одной строке все ячейки сразу? Ну, например столбец F6:F3011, каждая строка умножается на показания счетчика и результат выводится в столбец C6:C3011. Это я записал в таком виде: [c6:c3011].Value = [f6:f3011*A1]. Вроде все работает, но когда я добавил еще несколько столбцов:

[c6:c3011].Value = [f6:f3011*A1]
[j6:j3011].Value = [m6:m3011 * A1]
[q6:q3011].Value = [t6:t3011 * A1]
[x6:x3011].Value = [aa6:aa3011 * A1]
[ae6:ae3011].Value = [ah6:ah3011 * A1]
[al6:al3011].Value = [ao6:ao3011 * A1]
[as6:as3011].Value = [av6:av3011 * A1]
[cb6:cb3011].Value = [ce6:ce3011 * A1]
[ci6:ci3011].Value = [cl6:cl3011 * A1]
[cp6:cp3011].Value = [cs6:cs3011 * A1]
[cw6:cw3011].Value = [cz6:cz3011 * A1]
[dd6:dd3011].Value = [dg6:dg3011 * A1]
[dk6:dk3011].Value = [dn6:dn3011 * A1]
[dr6:dr3011].Value = [du6:du3011 * A1]

то программа стала немыслимо тормозить. При этом мне пришлось перенести округление в другой столбец, поскольку не знал, как это сделать.

Ваша строка:
ActiveSheet.Cells(6, 3) = Round(CounterCell.Value * ActiveSheet.Cells(6, 6), 0)
выглядит супер профессионально, только я, бедолага, не представляю как ее распрстранить на весь столбец и на все столбцы.
В самом excel я вроде немного разбираюсь, а в VBA - полный профан... Вдруг сможете помочь?
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39712385
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alkhimik ActiveSheet.Cells(6, 3) = Round(CounterCell.Value * ActiveSheet.Cells(6, 6), 0)
выглядит супер профессионально, только я, бедолага, не представляю как ее распрстранить на весь столбец и на все столбцы.
В самом excel я вроде немного разбираюсь, а в VBA - полный профан... Вдруг сможете помочь?
ActiveSheet.Cells(6, 3) 6- номер строки, 3- номер столбца
ActiveSheet.Cells(6, 3) = Round(CounterCell.Value * ActiveSheet.Cells(6, 6), 0) - первая строка вашего массива
ActiveSheet.Cells(7, 3) = Round(CounterCell.Value * ActiveSheet.Cells(7, 6), 0) - вторая строка
Ну далее должно быть ясно.....
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39712393
Alkhimik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно. Только неужели это писать 3000 раз для одного столбца, если в нем 3000 строк? А для 14 столбцов?
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39712402
Alkhimik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может можно изобразить что-то типа:

k from 6 to 3011

и далее: ActiveSheet.Cells(k, 3) = Round(CounterCell.Value * ActiveSheet.Cells(k, 6), 0)
k = k + 1
Но это мои рассуждения дилетанта, а как бы их воплотить в жизнь?
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39712403
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39712418
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlkhimikЯсно. Только неужели это писать 3000 раз для одного столбца, если в нем 3000 строк? А для 14 столбцов?
Ну я ж не знал сколько там строк......
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Sub Counter()

Dim CounterCell As Range, i As Long, k as integer
Set CounterCell = ActiveSheet.Range("A1")
CounterCell.Value = 0
Application.ScreenUpdating = False
Do While CounterCell.Value < 1000000#
    CounterCell.Value = CounterCell.Value + 0.01
     For k=6 to 3011
               ActiveSheet.Cells(k, 3) = Round(CounterCell.Value * ActiveSheet.Cells(k, 6), 0)
               ' ну со столбцами теперь  уж точно справитесь :))))
     next k   
Loop

Application.ScreenUpdating = True

End Sub
...
Рейтинг: 0 / 0
Вставка функции персчета массива в счетчик
    #39712426
Alkhimik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура!!!! Спасибо!!!!!! Вы - умница!!!!!!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставка функции персчета массива в счетчик
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]