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

Вход

Регистрация

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

 

= Мир MS Excel/Фиксация данных счетчика на другом листе - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Фиксация данных счетчика на другом листе
Leon307 Дата: Пятница, 21.09.2018, 12:11 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Уважаемые форумчане,
У меня имеется программа, записанная в ячейках Excel. Программа предусматривает сравнение результатов имеющейся комбинации цифр с комбинацией, сгенерированной при помощи счетчика. Однако формула, записанная в ячейке:
Код
=ЕСЛИ(BU9=BU$7;$K$1;BV9)
выдает только последний результат работы счетчика, а мне необходимо записать все результаты, при которых 4 сгенерированные цифры совпадут с четырьмя из шести оригинальных цифр (Также и для 5 и для 6 совпадений). Поскольку количество строк программы превышает 1000, то как можно записать в макросе счетчика, чтобы каждое совпадение фисировалось на новом листе в той же строчке? Пример программы прилагается. В приложенной программе необходимо записать данные из ячеек: BV9 - 4 любых совпадения, CD9 - 5 любых совпадений, DS9 - полное совпадение, DT9 - совпадение первых 5 чисел, DU9 - совпадение последних 5 чисел.
Текст макроса счетчика:

[vba]
Код
Public Sub Counter()

Dim CounterCell As Range

Set CounterCell = ActiveSheet.Range("K1")

CounterCell.Value = 13.53

Do While CounterCell.Value < 1000000#

CounterCell.Value = CounterCell.Value + 0.01

Loop

End Sub
[/vba]

Буду очень признателен за подсказку.
К сообщению приложен файл: __3.rar (91.3 Kb)


Сообщение отредактировал Leon307 - Пятница, 21.09.2018, 15:26
 
Ответить
СообщениеУважаемые форумчане,
У меня имеется программа, записанная в ячейках Excel. Программа предусматривает сравнение результатов имеющейся комбинации цифр с комбинацией, сгенерированной при помощи счетчика. Однако формула, записанная в ячейке:
Код
=ЕСЛИ(BU9=BU$7;$K$1;BV9)
выдает только последний результат работы счетчика, а мне необходимо записать все результаты, при которых 4 сгенерированные цифры совпадут с четырьмя из шести оригинальных цифр (Также и для 5 и для 6 совпадений). Поскольку количество строк программы превышает 1000, то как можно записать в макросе счетчика, чтобы каждое совпадение фисировалось на новом листе в той же строчке? Пример программы прилагается. В приложенной программе необходимо записать данные из ячеек: BV9 - 4 любых совпадения, CD9 - 5 любых совпадений, DS9 - полное совпадение, DT9 - совпадение первых 5 чисел, DU9 - совпадение последних 5 чисел.
Текст макроса счетчика:

[vba]
Код
Public Sub Counter()

Dim CounterCell As Range

Set CounterCell = ActiveSheet.Range("K1")

CounterCell.Value = 13.53

Do While CounterCell.Value < 1000000#

CounterCell.Value = CounterCell.Value + 0.01

Loop

End Sub
[/vba]

Буду очень признателен за подсказку.

Автор - Leon307
Дата добавления - 21.09.2018 в 12:11
китин Дата: Пятница, 21.09.2018, 12:32 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7040
Репутация: 1080 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Leon307, оформите вашу тему в соответствии с правилами форума в части использования тэгов и для формул и для кодов. пояснялка здесь
Помогающих прошу пока потерпеть


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеLeon307, оформите вашу тему в соответствии с правилами форума в части использования тэгов и для формул и для кодов. пояснялка здесь
Помогающих прошу пока потерпеть

Автор - китин
Дата добавления - 21.09.2018 в 12:32
StoTisteg Дата: Пятница, 21.09.2018, 13:03 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Leon307, я ничего не понял. что Вы там считаете? Ваш код просто напросто эквивалентен одной строке:[vba]
Код
Cells(1,11).Value=1000000#
[/vba]


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Пятница, 21.09.2018, 13:05
 
Ответить
СообщениеLeon307, я ничего не понял. что Вы там считаете? Ваш код просто напросто эквивалентен одной строке:[vba]
Код
Cells(1,11).Value=1000000#
[/vba]

Автор - StoTisteg
Дата добавления - 21.09.2018 в 13:03
Leon307 Дата: Пятница, 21.09.2018, 13:27 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Уважаемый StoTisteg, я показал макрос счетчика, который в моем примере является коэффициентом, меняющимся от 0 и до верхнего предела с шагом 0,01. С каждым изменением счетчика меняются данные в строке которые сравниваются с эталонной группой цифр. При достижении некоторых показателей счетчика вычисляемые данные совпадают с эталонной группой цифр либо по четыерем, либо по пяти и 6 цифрам. Вот эти данные счетчика мне и необходимо фиксировать. А поскольку, например, для совпадения данных по 4 цифрам существет большое количество коэффициентов, то мне надо их все зафиксировать. Эталонная группа цифр находится в строке
Код
CV9:DA9
, а расчетная группа цифр - в строке
Код
CN9:CS9
. Если Вы запустите макрос в моем примере, то можете сами убедиться, что в ячейке BV9 довольно быстро появятся показания счетчика, при которых 4 расчетные цифры совпадут с эталонной группой цифр. Спасибо Вам за внимание к моей проблемме.


Сообщение отредактировал Leon307 - Пятница, 21.09.2018, 15:28
 
Ответить
СообщениеУважаемый StoTisteg, я показал макрос счетчика, который в моем примере является коэффициентом, меняющимся от 0 и до верхнего предела с шагом 0,01. С каждым изменением счетчика меняются данные в строке которые сравниваются с эталонной группой цифр. При достижении некоторых показателей счетчика вычисляемые данные совпадают с эталонной группой цифр либо по четыерем, либо по пяти и 6 цифрам. Вот эти данные счетчика мне и необходимо фиксировать. А поскольку, например, для совпадения данных по 4 цифрам существет большое количество коэффициентов, то мне надо их все зафиксировать. Эталонная группа цифр находится в строке
Код
CV9:DA9
, а расчетная группа цифр - в строке
Код
CN9:CS9
. Если Вы запустите макрос в моем примере, то можете сами убедиться, что в ячейке BV9 довольно быстро появятся показания счетчика, при которых 4 расчетные цифры совпадут с эталонной группой цифр. Спасибо Вам за внимание к моей проблемме.

Автор - Leon307
Дата добавления - 21.09.2018 в 13:27
_Boroda_ Дата: Пятница, 21.09.2018, 14:54 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Уважаемый StoTisteg

У Вас как с русским языком? В это фразе что-то не совсем ясно? Нужны какие-то дополнительные пояснения?
оформите вашу тему в соответствии с правилами форума в части использования тэгов и для формул и для кодов
Помогающих прошу пока потерпеть


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Уважаемый StoTisteg

У Вас как с русским языком? В это фразе что-то не совсем ясно? Нужны какие-то дополнительные пояснения?
оформите вашу тему в соответствии с правилами форума в части использования тэгов и для формул и для кодов
Помогающих прошу пока потерпеть

Автор - _Boroda_
Дата добавления - 21.09.2018 в 14:54
Leon307 Дата: Пятница, 21.09.2018, 15:29 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Уважаемый _Boroda_, теперь правильно?
 
Ответить
СообщениеУважаемый _Boroda_, теперь правильно?

Автор - Leon307
Дата добавления - 21.09.2018 в 15:29
_Boroda_ Дата: Пятница, 21.09.2018, 16:33 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Да, все правильно. Даже перебор - в посте 4 не формулы, их не нужно обтегачивать.
Но все остальное по-прежнему не совсем понятно

Разве что вот:
Я бы убрал все циклические ссылки типа формулы для ячейки BV9
Код
=ЕСЛИ(BU9=BU$7;$K$1;BV9)

Можно переписать так
Код
=ЕСЛИ(BU9=BU$7;$K$1;)

А в коде макроса делать проверку на такие "указывающие" ячейки. Типа
[vba]
Код
if range("BV9") then
   'то, что нужно сделать в тот момент, когда нашлось совпадение
end if
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДа, все правильно. Даже перебор - в посте 4 не формулы, их не нужно обтегачивать.
Но все остальное по-прежнему не совсем понятно

Разве что вот:
Я бы убрал все циклические ссылки типа формулы для ячейки BV9
Код
=ЕСЛИ(BU9=BU$7;$K$1;BV9)

Можно переписать так
Код
=ЕСЛИ(BU9=BU$7;$K$1;)

А в коде макроса делать проверку на такие "указывающие" ячейки. Типа
[vba]
Код
if range("BV9") then
   'то, что нужно сделать в тот момент, когда нашлось совпадение
end if
[/vba]

Автор - _Boroda_
Дата добавления - 21.09.2018 в 16:33
Leon307 Дата: Пятница, 21.09.2018, 17:11 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо! Только циклические ссылки были необходимы, чтобы хотя бы последнее значение фиксировалось в ячейке. Иначе по завершении цикла никаких данных не было бы видно. Так моя проблема в том и заключается, что я не знаю как записать все значения "К1", когда появляются совпадения. Ведь "К1" появляется в ячейке много раз, а в моем варианте я увижу лишь последнее значение.
 
Ответить
СообщениеСпасибо! Только циклические ссылки были необходимы, чтобы хотя бы последнее значение фиксировалось в ячейке. Иначе по завершении цикла никаких данных не было бы видно. Так моя проблема в том и заключается, что я не знаю как записать все значения "К1", когда появляются совпадения. Ведь "К1" появляется в ячейке много раз, а в моем варианте я увижу лишь последнее значение.

Автор - Leon307
Дата добавления - 21.09.2018 в 17:11
_Boroda_ Дата: Пятница, 21.09.2018, 17:25 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так Вы вовнутрь Вашего цикла (перед Loop) напишите условие проверки (if...). И как только на каком-то значении CounterCell условие проверки сработает, то начинается кусок
то, что нужно сделать в тот момент, когда нашлось совпадение


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак Вы вовнутрь Вашего цикла (перед Loop) напишите условие проверки (if...). И как только на каком-то значении CounterCell условие проверки сработает, то начинается кусок
то, что нужно сделать в тот момент, когда нашлось совпадение

Автор - _Boroda_
Дата добавления - 21.09.2018 в 17:25
Leon307 Дата: Пятница, 21.09.2018, 17:26 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
У меня есть макрос, который создает лист и записвает на него все меняющиеся данные в ячейке "BV11" в строчку 11 и во все строчки ниже. Но этот макрос работает только при ручном вводе данных в ячейку "BV11" и ниже. А вот как сделать, чтобы этот макрос выводил значения автоматически попадаемые в эту ячейку?
Вот этот макрос:

[vba]
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim sh_res As Worksheet, lc As Long, r As Long
      
        
    ' Смотрим, что значение больше нуля.
    If Target.Value <= 0 Then
        Exit Sub
    End If
    
    ' Проверяем, что изменение произошло в строке 11 и дальше.
    If Target.Row < 11 Then
        Exit Sub
    End If
    
    ' Отключение пересчёта формул и монитора, чтобы ускорить макрос.
    Dim calc As Long: calc = Application.Calculation
    Application.ScreenUpdating = False
    
    ' Смотрим, в каком столбце произошло изменение.
    Select Case Target.Column
        Case 74
            ' Присваиваем листу-результату имя 'sh_res'.
            Set sh_res = Worksheets("Лист1")
        Case 82
             Set sh_res = Worksheets("Лист2")
    End Select
    
    ' Копируем данные на лист-результат из ячейки, в которой произошло изменение.
    ' Записываем в переменную 'r' номер строки, в которой произошло изменение.
    r = Target.Row
    ' Поиск последнего столбца. End не ищет в скрытых столбцах.
    If sh_res.Cells(r, "A").Value = "" Then
        lc = 1
    Else
        lc = sh_res.Cells(r, sh_res.Columns.Count).End(xlToLeft).Column + 1
    End If
    ' Вставка данных.
    sh_res.Cells(r, lc).Value = Target.Value
    
    ' Включение того, что отключено.
    Application.Calculation = calc
    Application.ScreenUpdating = True

End Sub
[/vba]

Также прилагаю и сам пример в Excel.
К сообщению приложен файл: Example-v2exp.rar (88.2 Kb)
 
Ответить
СообщениеУ меня есть макрос, который создает лист и записвает на него все меняющиеся данные в ячейке "BV11" в строчку 11 и во все строчки ниже. Но этот макрос работает только при ручном вводе данных в ячейку "BV11" и ниже. А вот как сделать, чтобы этот макрос выводил значения автоматически попадаемые в эту ячейку?
Вот этот макрос:

[vba]
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim sh_res As Worksheet, lc As Long, r As Long
      
        
    ' Смотрим, что значение больше нуля.
    If Target.Value <= 0 Then
        Exit Sub
    End If
    
    ' Проверяем, что изменение произошло в строке 11 и дальше.
    If Target.Row < 11 Then
        Exit Sub
    End If
    
    ' Отключение пересчёта формул и монитора, чтобы ускорить макрос.
    Dim calc As Long: calc = Application.Calculation
    Application.ScreenUpdating = False
    
    ' Смотрим, в каком столбце произошло изменение.
    Select Case Target.Column
        Case 74
            ' Присваиваем листу-результату имя 'sh_res'.
            Set sh_res = Worksheets("Лист1")
        Case 82
             Set sh_res = Worksheets("Лист2")
    End Select
    
    ' Копируем данные на лист-результат из ячейки, в которой произошло изменение.
    ' Записываем в переменную 'r' номер строки, в которой произошло изменение.
    r = Target.Row
    ' Поиск последнего столбца. End не ищет в скрытых столбцах.
    If sh_res.Cells(r, "A").Value = "" Then
        lc = 1
    Else
        lc = sh_res.Cells(r, sh_res.Columns.Count).End(xlToLeft).Column + 1
    End If
    ' Вставка данных.
    sh_res.Cells(r, lc).Value = Target.Value
    
    ' Включение того, что отключено.
    Application.Calculation = calc
    Application.ScreenUpdating = True

End Sub
[/vba]

Также прилагаю и сам пример в Excel.

Автор - Leon307
Дата добавления - 21.09.2018 в 17:26
  • Страница 1 из 1
  • 1
Поиск:

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