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

Вход

Регистрация

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

 

= Мир MS Excel/Увеличение области чисел с огибанием некоторых ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Увеличение области чисел с огибанием некоторых ячеек (Макросы/Sub)
Увеличение области чисел с огибанием некоторых ячеек
КошкаСофи Дата: Четверг, 30.05.2019, 12:57 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте ребята.
Подскажите - как поправить макрос.

Макрос по событию Worksheet_Change - при записи в ячейку S16 какого либо числа - формирует вокруг этой ячейки область из подобных чисел.
Количество этих чисел - задается в ячейке H4.
Однако рядом с ячейкой S16 - расположены ячейки со значением s78.

Вопрос в том, как макросу - не заполнять ячейки со значениями s78 - своими цифрами (во время срабатывания макроса)?
( При этом количество созданных макросом ячеек - должно быть по прежнему равно - заданному в H4 )
К сообщению приложен файл: 1_.xls (45.5 Kb)
 
Ответить
СообщениеЗдравствуйте ребята.
Подскажите - как поправить макрос.

Макрос по событию Worksheet_Change - при записи в ячейку S16 какого либо числа - формирует вокруг этой ячейки область из подобных чисел.
Количество этих чисел - задается в ячейке H4.
Однако рядом с ячейкой S16 - расположены ячейки со значением s78.

Вопрос в том, как макросу - не заполнять ячейки со значениями s78 - своими цифрами (во время срабатывания макроса)?
( При этом количество созданных макросом ячеек - должно быть по прежнему равно - заданному в H4 )

Автор - КошкаСофи
Дата добавления - 30.05.2019 в 12:57
RAN Дата: Четверг, 30.05.2019, 14:31 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
    Do
        Set r = [S16].Offset(-iOffs, -iOffs).Resize(iOffs * 2 + 1, iOffs * 2 + 1)
        iCol = r.Columns.Count
'        r(1) = x    'Target - 1
        For i = 1 To iCol
        If Len(r(1, i)) = 0 Then
            r(1, i) = [S16]
            x = x - 1
            End If
            'x = [H4]
            If x <= 0 Then GoTo End_
        Next
        For i = 2 To iCol
         If Len(r(i, iCol)) = 0 Then
           r(i, iCol) = [S16]
            x = x - 1
             End If
           'x = [H4]
            If x <= 0 Then GoTo End_
        Next
        For i = iCol - 1 To 1 Step -1
          If Len(r(iCol, i)) = 0 Then
          r(iCol, i) = [S16]
            x = x - 1
             End If
           'x = [H4]
            If x <= 0 Then GoTo End_
        Next
        For i = iCol - 1 To 2 Step -1
          If Len(r(i, 1)) = 0 Then
          r(i, 1) = [S16]
            x = x - 1
             End If
           'x = [H4]
            If x <= 0 Then GoTo End_
        Next
        iOffs = iOffs + 1
        DoEvents
    Loop
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
    Do
        Set r = [S16].Offset(-iOffs, -iOffs).Resize(iOffs * 2 + 1, iOffs * 2 + 1)
        iCol = r.Columns.Count
'        r(1) = x    'Target - 1
        For i = 1 To iCol
        If Len(r(1, i)) = 0 Then
            r(1, i) = [S16]
            x = x - 1
            End If
            'x = [H4]
            If x <= 0 Then GoTo End_
        Next
        For i = 2 To iCol
         If Len(r(i, iCol)) = 0 Then
           r(i, iCol) = [S16]
            x = x - 1
             End If
           'x = [H4]
            If x <= 0 Then GoTo End_
        Next
        For i = iCol - 1 To 1 Step -1
          If Len(r(iCol, i)) = 0 Then
          r(iCol, i) = [S16]
            x = x - 1
             End If
           'x = [H4]
            If x <= 0 Then GoTo End_
        Next
        For i = iCol - 1 To 2 Step -1
          If Len(r(i, 1)) = 0 Then
          r(i, 1) = [S16]
            x = x - 1
             End If
           'x = [H4]
            If x <= 0 Then GoTo End_
        Next
        iOffs = iOffs + 1
        DoEvents
    Loop
[/vba]

Автор - RAN
Дата добавления - 30.05.2019 в 14:31
КошкаСофи Дата: Суббота, 01.06.2019, 01:23 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN, спасибо.
А вот скажите - если ячейки с препятствиями будут идти непрерывно - как недопустить простановку области чисел на другой стороне препятствия из ячеек ?

Потому что сейчас в данном макросе - числа игнорируют препятствие и размещаются на другой его стороне.
А ведь эта должна быть единая область.
Получается - здесь числа должны разместится только на одной стороне - до препятствия.
К сообщению приложен файл: 1_2.xls (52.0 Kb)
 
Ответить
СообщениеRAN, спасибо.
А вот скажите - если ячейки с препятствиями будут идти непрерывно - как недопустить простановку области чисел на другой стороне препятствия из ячеек ?

Потому что сейчас в данном макросе - числа игнорируют препятствие и размещаются на другой его стороне.
А ведь эта должна быть единая область.
Получается - здесь числа должны разместится только на одной стороне - до препятствия.

Автор - КошкаСофи
Дата добавления - 01.06.2019 в 01:23
КошкаСофи Дата: Вторник, 04.06.2019, 08:39 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Кто-нибудь знает как это сделать ?
 
Ответить
СообщениеКто-нибудь знает как это сделать ?

Автор - КошкаСофи
Дата добавления - 04.06.2019 в 08:39
Fidgy Дата: Среда, 05.06.2019, 09:18 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 11 ±
Замечаний: 0% ±

Excel 2016
КошкаСофи, а какие правила?
Заполняем ячейки змейкой, или подразумеваем что ячейки заполняются радиально, от центра, во все стороны?
Ещё много вопросов остается, о том как реагировать на препятствия
 
Ответить
СообщениеКошкаСофи, а какие правила?
Заполняем ячейки змейкой, или подразумеваем что ячейки заполняются радиально, от центра, во все стороны?
Ещё много вопросов остается, о том как реагировать на препятствия

Автор - Fidgy
Дата добавления - 05.06.2019 в 09:18
КошкаСофи Дата: Среда, 05.06.2019, 13:01 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Fidgy, в последнем приложенном файле - ясно видно, что область чисел - пробивает препятствие, хотя не должна этого делать.
 
Ответить
СообщениеFidgy, в последнем приложенном файле - ясно видно, что область чисел - пробивает препятствие, хотя не должна этого делать.

Автор - КошкаСофи
Дата добавления - 05.06.2019 в 13:01
Fidgy Дата: Среда, 05.06.2019, 15:09 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 11 ±
Замечаний: 0% ±

Excel 2016
КошкаСофи, вопрос в том что она должна делать?
Если область дойдет до края препятствия, что должно произойти?
 
Ответить
СообщениеКошкаСофи, вопрос в том что она должна делать?
Если область дойдет до края препятствия, что должно произойти?

Автор - Fidgy
Дата добавления - 05.06.2019 в 15:09
КошкаСофи Дата: Четверг, 06.06.2019, 01:44 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Если область дойдет до края препятствия, что должно произойти?

В этом случае область должна продолжать увеличиваться, но в сторону противоположную препятствию.
Потому что - если препятствие пересекать нельзя - то область не может увеличиваться проходя сквозь него.

Значит области нужно продолжать увеличиваться в ту сторону, где препятствий нет.
 
Ответить
Сообщение
Если область дойдет до края препятствия, что должно произойти?

В этом случае область должна продолжать увеличиваться, но в сторону противоположную препятствию.
Потому что - если препятствие пересекать нельзя - то область не может увеличиваться проходя сквозь него.

Значит области нужно продолжать увеличиваться в ту сторону, где препятствий нет.

Автор - КошкаСофи
Дата добавления - 06.06.2019 в 01:44
Fidgy Дата: Пятница, 07.06.2019, 14:37 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 11 ±
Замечаний: 0% ±

Excel 2016
КошкаСофи,
Ну как-то так (см. вложение)
К сообщению приложен файл: 9997752.xls (51.0 Kb)
 
Ответить
СообщениеКошкаСофи,
Ну как-то так (см. вложение)

Автор - Fidgy
Дата добавления - 07.06.2019 в 14:37
КошкаСофи Дата: Пятница, 07.06.2019, 21:15 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Fidgy, спасибо.

Скажите, вот в приложенном файле - если область достигает какого-то определенного уровня - то она перестает увеличиваться в размерах.
Хотя препятствия перед ней нет.
Почему так происходит и как это изменить ?

Ведь по идее - если препятствия нет, то область должна увеличиваться.
К сообщению приложен файл: 9997752_.xls (47.0 Kb)
 
Ответить
СообщениеFidgy, спасибо.

Скажите, вот в приложенном файле - если область достигает какого-то определенного уровня - то она перестает увеличиваться в размерах.
Хотя препятствия перед ней нет.
Почему так происходит и как это изменить ?

Ведь по идее - если препятствия нет, то область должна увеличиваться.

Автор - КошкаСофи
Дата добавления - 07.06.2019 в 21:15
RAN Дата: Пятница, 07.06.2019, 23:27 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
КошкаСофи, поскольку ваш файл вставился с тем же именем, что и файл Fidgy, теперь не возможно скачать ни один из них. Перевложите файл.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеКошкаСофи, поскольку ваш файл вставился с тем же именем, что и файл Fidgy, теперь не возможно скачать ни один из них. Перевложите файл.

Автор - RAN
Дата добавления - 07.06.2019 в 23:27
КошкаСофи Дата: Пятница, 07.06.2019, 23:31 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN, еще раз прикрепляю файл.
(с другим именем)
К сообщению приложен файл: 4442542.xls (47.0 Kb)
 
Ответить
СообщениеRAN, еще раз прикрепляю файл.
(с другим именем)

Автор - КошкаСофи
Дата добавления - 07.06.2019 в 23:31
RAN Дата: Суббота, 08.06.2019, 00:02 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
КошкаСофи, только вам ведомо, что за задачу вы решаете.
Но разные задачи требуют разный алгоритм.
Вы просили "например", я вам сделал. Вы задали второй вопрос, я поправил.
Но, наконец, можно уже и представить картину в целом.
Не скупитесь на примеры, сделайте побольше вариантов, как должно получиться.
Например, в вашем файле ячейка R11 заполнена, а ячейки P24 и T24 нет.
Как будут размножаться ёжики (200 шт)?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеКошкаСофи, только вам ведомо, что за задачу вы решаете.
Но разные задачи требуют разный алгоритм.
Вы просили "например", я вам сделал. Вы задали второй вопрос, я поправил.
Но, наконец, можно уже и представить картину в целом.
Не скупитесь на примеры, сделайте побольше вариантов, как должно получиться.
Например, в вашем файле ячейка R11 заполнена, а ячейки P24 и T24 нет.
Как будут размножаться ёжики (200 шт)?

Автор - RAN
Дата добавления - 08.06.2019 в 00:02
КошкаСофи Дата: Суббота, 08.06.2019, 00:41 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Но, наконец, можно уже и представить картину в целом.

Так мой вопрос не противоречит картине в целом.
Область чисел должна увеличиваться, не проходя сквозь препятствия.

Например, в вашем файле ячейка R11 заполнена, а ячейки P24 и T24 нет.

В моем файле ячейка R11 - заполнена.
Ячейки P24 и T24 - заполнены препятствием. Они не пустые - это препятствия.

В моем приложенном файле - видно, что ячейки Q31, R31, S31 - пустые, то есть там нет препятствий - ограничивающих рост области.
Но область на них не распространяется, при срабатывании макроса.
Я не совсем понимаю почему, ведь там нет препятствий.

Почему же тогда область перестает увеличиваться ?
 
Ответить
Сообщение
Но, наконец, можно уже и представить картину в целом.

Так мой вопрос не противоречит картине в целом.
Область чисел должна увеличиваться, не проходя сквозь препятствия.

Например, в вашем файле ячейка R11 заполнена, а ячейки P24 и T24 нет.

В моем файле ячейка R11 - заполнена.
Ячейки P24 и T24 - заполнены препятствием. Они не пустые - это препятствия.

В моем приложенном файле - видно, что ячейки Q31, R31, S31 - пустые, то есть там нет препятствий - ограничивающих рост области.
Но область на них не распространяется, при срабатывании макроса.
Я не совсем понимаю почему, ведь там нет препятствий.

Почему же тогда область перестает увеличиваться ?

Автор - КошкаСофи
Дата добавления - 08.06.2019 в 00:41
RAN Дата: Суббота, 08.06.2019, 08:56 | Сообщение № 15
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Все очень просто. На листе заканчиваются строки, необходимые для дальнейшей работы этого алгоритма.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВсе очень просто. На листе заканчиваются строки, необходимые для дальнейшей работы этого алгоритма.

Автор - RAN
Дата добавления - 08.06.2019 в 08:56
КошкаСофи Дата: Суббота, 08.06.2019, 13:32 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN, а как это исправить ?
Как убрать это ограничение на количество строк ?
 
Ответить
СообщениеRAN, а как это исправить ?
Как убрать это ограничение на количество строк ?

Автор - КошкаСофи
Дата добавления - 08.06.2019 в 13:32
RAN Дата: Суббота, 08.06.2019, 16:32 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Так это совсем просто. Нужно придумать новый алгоритм, и написать макрос, работающий по этому алгоритму.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеТак это совсем просто. Нужно придумать новый алгоритм, и написать макрос, работающий по этому алгоритму.

Автор - RAN
Дата добавления - 08.06.2019 в 16:32
КошкаСофи Дата: Воскресенье, 09.06.2019, 00:52 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN, а почему имеющийся алгоритм работает на ограничениях строк - столбцов ?
Может просто - в имеющемся макросе - убрать это ограничение ?
 
Ответить
СообщениеRAN, а почему имеющийся алгоритм работает на ограничениях строк - столбцов ?
Может просто - в имеющемся макросе - убрать это ограничение ?

Автор - КошкаСофи
Дата добавления - 09.06.2019 в 00:52
RAN Дата: Воскресенье, 09.06.2019, 01:15 | Сообщение № 19
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Никаких возражений. Уберите.
Или, как вариант, можете рисовать вашу "непроходимость" вокруг ячейки KUR500000. Там, я думаю, строк хватит.
И почему вы так не любите число 13?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНикаких возражений. Уберите.
Или, как вариант, можете рисовать вашу "непроходимость" вокруг ячейки KUR500000. Там, я думаю, строк хватит.
И почему вы так не любите число 13?

Автор - RAN
Дата добавления - 09.06.2019 в 01:15
КошкаСофи Дата: Воскресенье, 09.06.2019, 01:52 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Никаких возражений. Уберите.


А как это в имеющемся макросе сделать ?
 
Ответить
Сообщение
Никаких возражений. Уберите.


А как это в имеющемся макросе сделать ?

Автор - КошкаСофи
Дата добавления - 09.06.2019 в 01:52
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Увеличение области чисел с огибанием некоторых ячеек (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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