Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Умножение яйчейки с применением цикла For..To..Next / 20 сообщений из 20, страница 1 из 1
20.04.2010, 15:30
    #36587963
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Уважаемые люди форума. возникла такая проблема есть яйчейки с данными (милион яйчеек), некоторые из них пыстые. Какой макрос лучше применить? Я вот сделал простенький цикл
Код: plaintext
1.
2.
3.
4.
Sub mm()
For n =  1  To  100 
Range("C" & n).Value = Range("B" & n).Value *  0 . 2 
Next n
End Sub

но при больших данных он тормозит, как можно ему дать "указания" если яйчейки пустые, то яйчейки соответственно не умножать???
Вот файл
макрос запустите Alt+F8> mm()
...
Рейтинг: 0 / 0
20.04.2010, 15:51
    #36588043
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Ser Artur,

как вариант:
Код: plaintext
1.
2.
3.
Sub фва()
    Range(Cells( 1 ,  3 ), Cells(Range("A65536").End(xlUp).Row,  3 )).FormulaLocal = "=RC[-2]*2*RC[-1]"
    Range(Cells( 1 ,  3 ), Cells(Range("A65536").End(xlUp).Row,  3 )).Value = Range(Cells( 1 ,  3 ), Cells(Range("A65536").End(xlUp).Row,  3 )).Value
End Sub
...
Рейтинг: 0 / 0
20.04.2010, 16:20
    #36588141
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
не проверял, но попробуйте:
1)автофильтром отсортироваь непустые и умножать;
2)специальная вставка-умножить на 0,2 макросом
...
Рейтинг: 0 / 0
20.04.2010, 16:42
    #36588193
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Нет автовильтром получается, но это долго.
...
Рейтинг: 0 / 0
20.04.2010, 16:47
    #36588203
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Ser ArturНет автовильтром получается, но это долго.а специальной вставкой? должно быть быстрее, ведь это excel сам "суетится" =)) циклом - самое долгое.

быстрее всего будет запросом типа:
Код: plaintext
1.
2.
select
a.[a1]* 0 . 2 
from column1 a
это на любителя, конечно =)
...
Рейтинг: 0 / 0
20.04.2010, 17:33
    #36588346
nilem
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
По-моему, самое быстрое так. Этот код у меня выполнялся 1100 мс

Range(Cells(1, 3), Cells(1048575, 3)).FormulaR1C1 = "=RC[-1]*0.2"

Ну можно еще:
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False

Хотя здесь это вряд ли даст большую экономию.

А пустые ячейки в столбце В дадут нули в С. Нули можно просто не отображать (в настройках).
...
Рейтинг: 0 / 0
20.04.2010, 22:12
    #36588880
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Ser Artur,

попробуйте задать формулу, как формулу массива.
...
Рейтинг: 0 / 0
21.04.2010, 04:12
    #36589119
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Такой варианты:

Код: plaintext
1.
2.
Sub test1()
    [C1:C1000000] = [IF(A1:A1000000<>"",A1:A1000000*B1:B1000000,"")]
End Sub

Код: plaintext
1.
2.
Sub test2()
    [C1:C1000000] = Evaluate("IF(A1:A1000000<>"""",A1:A1000000*B1:B1000000,"""")")
End Sub
...
Рейтинг: 0 / 0
21.04.2010, 05:39
    #36589129
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
KL (XL), добрый день!
Давно не было видно :-)
...
Рейтинг: 0 / 0
21.04.2010, 11:19
    #36589563
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
авторKL (XL) Да классно спасибо Все без проблем
...
Рейтинг: 0 / 0
21.04.2010, 11:29
    #36589594
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Если просто формулу, то так:
Код: plaintext
1.
2.
Sub test1()
 Range(Cells( 1 , "C"), Cells(Cells.Rows.Count, "C")).FormulaR1C1Local = "=ЕСЛИ(RC[-1]<>0;RC[-1]*0,2;"""")"
End Sub

Если нужно формулы заменить на значения то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub test2()
 Application.ScreenUpdating = False
 Application.Calculation = xlCalculationManual
 
 With Range(Cells( 1 , "C"), Cells(Cells.Rows.Count, "C"))
   .FormulaR1C1Local = "=ЕСЛИ(RC[-1]<>0;RC[-1]*0,2;"""")"
   .Value = .Value
 End With
 
 Application.Calculation = xlCalculationAutomatic
 Application.ScreenUpdating = True
End Sub
...
Рейтинг: 0 / 0
21.04.2010, 11:59
    #36589690
_slan_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
попробуйте попроще:
sub t()
[a1:a9999] = [a1:a9999 * 0.2]
end sub
...
Рейтинг: 0 / 0
21.04.2010, 12:02
    #36589709
_slan_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
не заметил - KL уже ответил :)
...
Рейтинг: 0 / 0
21.04.2010, 12:46
    #36589867
-O_o-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Ser ArturУважаемые люди форума. возникла такая проблема есть яйчейки с данными (милион яйчеек), некоторые из них пыстые. Какой макрос лучше применить? Я вот сделал простенький цикл
Код: plaintext
1.
2.
3.
4.
Sub mm()
For n =  1  To  100 
Range("C" & n).Value = Range("B" & n).Value *  0 . 2 
Next n
End Sub

но при больших данных он тормозит, как можно ему дать "указания" если яйчейки пустые, то яйчейки соответственно не умножать???
Вот файл
макрос запустите Alt+F8> mm()
Подскажите пожалуйста, что означает вот это :
Код: plaintext
Range("C" [color=red]& n[/color]).Value = Range("B" [color=red]& n[/color]).Value *  0 . 2 
Как вообще на нормальном языке расшифровать??? Что оно делает? Помогите новичку.
...
Рейтинг: 0 / 0
21.04.2010, 13:05
    #36589926
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
-O_o-,

Скопируйте код в редактор и погоняйте по F8 - всё будет ясно. Желательно столбец В заполнить цифрами строк на 10...
...
Рейтинг: 0 / 0
21.04.2010, 13:11
    #36589950
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Range("C" & n ).Value = Range("B" & n ).Value * 0.2
n в цикле последовательно меняется от 1 до 100
тем самым последовтельно изменяя значения диапазонов
с С1 до С100 и В1 до В100
...
Рейтинг: 0 / 0
21.04.2010, 13:23
    #36589992
-O_o-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Ser ArturУважаемые люди форума. возникла такая проблема есть яйчейки с данными (милион яйчеек), некоторые из них пыстые. Какой макрос лучше применить? Я вот сделал простенький цикл
Код: plaintext
1.
2.
3.
4.
Sub mm()
For n =  1  To  100 
Range("C" & n).Value = Range("B" & n).Value *  0 . 2 
Next n
End Sub

но при больших данных он тормозит, как можно ему дать "указания" если яйчейки пустые, то яйчейки соответственно не умножать???
Вот файл
макрос запустите Alt+F8> mm()
Подскажите пожалуйста, что означает вот это :
Код: plaintext
Range("C" & n).Value = Range("B" & n).Value *  0 . 2 
Как вообще на нормальном языке расшифровать??? Что оно делает? Помогите новичку.
...
Рейтинг: 0 / 0
21.04.2010, 14:15
    #36590195
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
-O_o-Подскажите пожалуйста, что означает вот это :
Код: plaintext
Range("C" & n).Value = Range("B" & n).Value *  0 . 2 
Как вообще на нормальном языке расшифровать??? Что оно делает? Помогите новичку.
n - переменная значение которой меняется в цикле
например для n=1 вышестоящий код будет таким:
Код: plaintext
Range("C1").Value = Range("B1").Value *  0 . 2 
для n=100 таким:
Код: plaintext
Range("C100").Value = Range("B100").Value *  0 . 2 

А смысл формулы к примеру для случая n=1 в том, что он значение из ячейки B1 умножает на 0,2 и полученное значение записывает в ячейку C1 и так для всех n в цикле.
...
Рейтинг: 0 / 0
21.04.2010, 16:59
    #36590701
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Сергей06KL (XL), добрый день!
Давно не было видно :-)
Сергей06, добрый вечер! Да я и сейчас - на секунду. Времени нет вообще :-(
...
Рейтинг: 0 / 0
22.04.2010, 10:02
    #36591645
-O_o-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умножение яйчейки с применением цикла For..To..Next
Djon Player-O_o-Подскажите пожалуйста, что означает вот это :
Код: plaintext
Range("C" & n).Value = Range("B" & n).Value *  0 . 2 
Как вообще на нормальном языке расшифровать??? Что оно делает? Помогите новичку.
n - переменная значение которой меняется в цикле
например для n=1 вышестоящий код будет таким:
Код: plaintext
Range("C1").Value = Range("B1").Value *  0 . 2 
для n=100 таким:
Код: plaintext
Range("C100").Value = Range("B100").Value *  0 . 2 

А смысл формулы к примеру для случая n=1 в том, что он значение из ячейки B1 умножает на 0,2 и полученное значение записывает в ячейку C1 и так для всех n в цикле.
Спасибо. Понял.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Умножение яйчейки с применением цикла For..To..Next / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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