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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнение ячеек исходя из выполнения условий - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение ячеек исходя из выполнения условий (Макросы/Sub)
Заполнение ячеек исходя из выполнения условий
egorrr907 Дата: Понедельник, 27.02.2023, 11:30 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте, требуется исходя из того, какие значения находятся в диапазоне, заполнить конкретные ячейки.
На словах примерно так это понимаю: Если в диапазоне есть код 10, то в ячейке А1 поставить 1, если в диапазоне есть код 11, то в ячейке А2 поставить 2 ну и т.д.
Также уточнение, что диапазон в котором просматриваются коды находится на 2 Листе


Сообщение отредактировал egorrr907 - Понедельник, 27.02.2023, 11:32
 
Ответить
СообщениеЗдравствуйте, требуется исходя из того, какие значения находятся в диапазоне, заполнить конкретные ячейки.
На словах примерно так это понимаю: Если в диапазоне есть код 10, то в ячейке А1 поставить 1, если в диапазоне есть код 11, то в ячейке А2 поставить 2 ну и т.д.
Также уточнение, что диапазон в котором просматриваются коды находится на 2 Листе

Автор - egorrr907
Дата добавления - 27.02.2023 в 11:30
китин Дата: Понедельник, 27.02.2023, 15:35 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
а файл то будет?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеа файл то будет?

Автор - китин
Дата добавления - 27.02.2023 в 15:35
MikeVol Дата: Понедельник, 27.02.2023, 15:53 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 299
Репутация: 51 ±
Замечаний: 0% ±

Excel LTSC 2021 EN
egorrr907, Здравствуйте. Без файла как-то так. Предположим что у вас диапазон B2:F20
То тогда думаю что вам это подойдёт:
[vba]
Код

Option Explicit

Sub egorr()
    Dim rng As Range, cell As Range, ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")

    With ws
        Set cell = .Range("A2")

        For Each rng In .Range("B2:F" & .Cells(.Rows.Count, 6).End(xlUp).Row)

            If rng.Value = 10 Then
                cell.Value = 1
            ElseIf rng.Value = 11 Then
                cell.Offset(1, 0).Value = 2
            ElseIf rng.Value = 12 Then
                cell.Offset(2, 0).Value = 3
            ElseIf rng.Value = 13 Then
                cell.Offset(3, 0).Value = 4
            ElseIf rng.Value = 14 Then
                cell.Offset(4, 0).Value = 5
                ' и т.д.
            End If

        Next

    End With

End Sub
[/vba]
Подстрайвайте сами под себя так как с вашей стороны не было предоставлен файл пример.
Удачи.


Ученик.
 
Ответить
Сообщениеegorrr907, Здравствуйте. Без файла как-то так. Предположим что у вас диапазон B2:F20
То тогда думаю что вам это подойдёт:
[vba]
Код

Option Explicit

Sub egorr()
    Dim rng As Range, cell As Range, ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")

    With ws
        Set cell = .Range("A2")

        For Each rng In .Range("B2:F" & .Cells(.Rows.Count, 6).End(xlUp).Row)

            If rng.Value = 10 Then
                cell.Value = 1
            ElseIf rng.Value = 11 Then
                cell.Offset(1, 0).Value = 2
            ElseIf rng.Value = 12 Then
                cell.Offset(2, 0).Value = 3
            ElseIf rng.Value = 13 Then
                cell.Offset(3, 0).Value = 4
            ElseIf rng.Value = 14 Then
                cell.Offset(4, 0).Value = 5
                ' и т.д.
            End If

        Next

    End With

End Sub
[/vba]
Подстрайвайте сами под себя так как с вашей стороны не было предоставлен файл пример.
Удачи.

Автор - MikeVol
Дата добавления - 27.02.2023 в 15:53
egorrr907 Дата: Понедельник, 27.02.2023, 18:55 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

MikeVol, да, так на словах не очень объяснил.
На 1 листе в диапазоне G4:P23 введены коды дефектов, на 2 листе, эти же дефекты разнесены по столбцам, то есть условно могу сказать, код 28 это столбец BL на 2 листе, код 51 это столбец J и т.д.
Вот мне нужно по строкам заполнить Лист 2, но так, чтобы в столбце дефекта стояла единица.
Макрос проверяет диапазон на Листе 1, видит коды и в ячейки соответствующие названию дефекта ставит 1.
Также, забыл учесть нюанс, что если в диапазоне G-P нет вообще кодов, то поставить единицу в столбце H Лист 2.
Вот как-то так попытался объяснить.
Файл прикладываю
К сообщению приложен файл: defekty.xlsm (23.5 Kb)


Сообщение отредактировал egorrr907 - Понедельник, 27.02.2023, 18:56
 
Ответить
СообщениеMikeVol, да, так на словах не очень объяснил.
На 1 листе в диапазоне G4:P23 введены коды дефектов, на 2 листе, эти же дефекты разнесены по столбцам, то есть условно могу сказать, код 28 это столбец BL на 2 листе, код 51 это столбец J и т.д.
Вот мне нужно по строкам заполнить Лист 2, но так, чтобы в столбце дефекта стояла единица.
Макрос проверяет диапазон на Листе 1, видит коды и в ячейки соответствующие названию дефекта ставит 1.
Также, забыл учесть нюанс, что если в диапазоне G-P нет вообще кодов, то поставить единицу в столбце H Лист 2.
Вот как-то так попытался объяснить.
Файл прикладываю

Автор - egorrr907
Дата добавления - 27.02.2023 в 18:55
MikeVol Дата: Понедельник, 27.02.2023, 19:26 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 299
Репутация: 51 ±
Замечаний: 0% ±

Excel LTSC 2021 EN
egorrr907, Я ничего не понял из того что вы тут хотите. Из стартового поста
Если в диапазоне есть код 10, то в ячейке А1 поставить 1, если в диапазоне есть код 11, то в ячейке А2 поставить 2 ну и т.д.

Я понял и сделал. А вот тут ничего не понимаю.
Откуда макросу понять что
код 28 это столбец BL на 2 листе, код 51 это столбец J и т.д.
, какой код и к какому столбцу он должен относится? Не понятно.


Ученик.

Сообщение отредактировал MikeVol - Понедельник, 27.02.2023, 19:27
 
Ответить
Сообщениеegorrr907, Я ничего не понял из того что вы тут хотите. Из стартового поста
Если в диапазоне есть код 10, то в ячейке А1 поставить 1, если в диапазоне есть код 11, то в ячейке А2 поставить 2 ну и т.д.

Я понял и сделал. А вот тут ничего не понимаю.
Откуда макросу понять что
код 28 это столбец BL на 2 листе, код 51 это столбец J и т.д.
, какой код и к какому столбцу он должен относится? Не понятно.

Автор - MikeVol
Дата добавления - 27.02.2023 в 19:26
egorrr907 Дата: Вторник, 28.02.2023, 10:07 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

MikeVol, задать в макросе, что определенный код вносится только в определенный столбец, я примеры кодов и к какому столбцу относятся приложил. Код 28 на Листе1 соответствует столбцу BL на Листе2, т.е. если в диапазоне из Листа1 встречается 28, то поставить единицу в столбце BL Листа 2, Остальной список кодов там более 20 штук, я бы сделал по примеру.
 
Ответить
СообщениеMikeVol, задать в макросе, что определенный код вносится только в определенный столбец, я примеры кодов и к какому столбцу относятся приложил. Код 28 на Листе1 соответствует столбцу BL на Листе2, т.е. если в диапазоне из Листа1 встречается 28, то поставить единицу в столбце BL Листа 2, Остальной список кодов там более 20 штук, я бы сделал по примеру.

Автор - egorrr907
Дата добавления - 28.02.2023 в 10:07
MikeVol Дата: Вторник, 28.02.2023, 10:30 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 299
Репутация: 51 ±
Замечаний: 0% ±

Excel LTSC 2021 EN
egorrr907, Здравствуйте. Нечто такое попробуйте:
[vba]
Код

            , ...................................
            If rng.Value = 28 Then
            ThisWorkbook.Worksheets("Лист2").Cells(rng+2,"BL").Value = 1
[/vba]
Нет возможности проверить, в дороге. Позже когда будет под рукой ноутбук проверю.


Ученик.
 
Ответить
Сообщениеegorrr907, Здравствуйте. Нечто такое попробуйте:
[vba]
Код

            , ...................................
            If rng.Value = 28 Then
            ThisWorkbook.Worksheets("Лист2").Cells(rng+2,"BL").Value = 1
[/vba]
Нет возможности проверить, в дороге. Позже когда будет под рукой ноутбук проверю.

Автор - MikeVol
Дата добавления - 28.02.2023 в 10:30
MikeVol Дата: Вторник, 28.02.2023, 11:55 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 299
Репутация: 51 ±
Замечаний: 0% ±

Excel LTSC 2021 EN
egorrr907, код выше не работает, проверил. Вот пробуйте:
[vba]
Код

Option Explicit

Sub egorr_2()
    Dim rng         As Range
    Dim ws          As Worksheet: Set ws = ThisWorkbook.Worksheets("Лист1")
    Dim sh          As Worksheet: Set sh = ThisWorkbook.Worksheets("Лист2")
    Dim i As Long, j As Long

    With ws

        For i = 4 To .Cells(.Rows.Count, 7).End(xlUp).Row

            For j = 7 To 16

                If .Cells(i, j).Value = 28 Then
                    sh.Cells(i - 2, 64).Value = 1
                ElseIf .Cells(i, j).Value = 51 Then
                    sh.Cells(i - 2, 10).Value = 2
                    ' и т.д.продолжаете с ElseIf
                End If

            Next

        Next

        If .Range("G4:P" & .Cells(.Rows.Count, 1).End(xlUp).Row).Find("*") Is Nothing Then
            sh.Range("H2").Value = 1
            sh.Range("H2").AutoFill Destination:=sh.Range("H2:H" & .Cells(.Rows.Count, 1).End(xlUp).Row), Type:=xlFillDefault
        End If

    End With

End Sub
[/vba]

Вроде бы то что вы просили. Удачи.


Ученик.

Сообщение отредактировал MikeVol - Вторник, 28.02.2023, 14:51
 
Ответить
Сообщениеegorrr907, код выше не работает, проверил. Вот пробуйте:
[vba]
Код

Option Explicit

Sub egorr_2()
    Dim rng         As Range
    Dim ws          As Worksheet: Set ws = ThisWorkbook.Worksheets("Лист1")
    Dim sh          As Worksheet: Set sh = ThisWorkbook.Worksheets("Лист2")
    Dim i As Long, j As Long

    With ws

        For i = 4 To .Cells(.Rows.Count, 7).End(xlUp).Row

            For j = 7 To 16

                If .Cells(i, j).Value = 28 Then
                    sh.Cells(i - 2, 64).Value = 1
                ElseIf .Cells(i, j).Value = 51 Then
                    sh.Cells(i - 2, 10).Value = 2
                    ' и т.д.продолжаете с ElseIf
                End If

            Next

        Next

        If .Range("G4:P" & .Cells(.Rows.Count, 1).End(xlUp).Row).Find("*") Is Nothing Then
            sh.Range("H2").Value = 1
            sh.Range("H2").AutoFill Destination:=sh.Range("H2:H" & .Cells(.Rows.Count, 1).End(xlUp).Row), Type:=xlFillDefault
        End If

    End With

End Sub
[/vba]

Вроде бы то что вы просили. Удачи.

Автор - MikeVol
Дата добавления - 28.02.2023 в 11:55
egorrr907 Дата: Вторник, 28.02.2023, 13:18 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

MikeVol, большое спасибо, но с "Иначе" она все равно ставит 1 в тех строках, где не должно быть, поскольку пустые ячейки встречаются в иных диапазонах, можно ли как-то задать условие что только весь диапазон пустой, а если уже что-то есть, то не ставить
 
Ответить
СообщениеMikeVol, большое спасибо, но с "Иначе" она все равно ставит 1 в тех строках, где не должно быть, поскольку пустые ячейки встречаются в иных диапазонах, можно ли как-то задать условие что только весь диапазон пустой, а если уже что-то есть, то не ставить

Автор - egorrr907
Дата добавления - 28.02.2023 в 13:18
MikeVol Дата: Вторник, 28.02.2023, 14:49 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 299
Репутация: 51 ±
Замечаний: 0% ±

Excel LTSC 2021 EN
egorrr907, выше изменил код. Извините был занят. ;)


Ученик.
 
Ответить
Сообщениеegorrr907, выше изменил код. Извините был занят. ;)

Автор - MikeVol
Дата добавления - 28.02.2023 в 14:49
egorrr907 Дата: Вторник, 28.02.2023, 16:23 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

MikeVol, снова почему-то не хочет работать именно эта функция. Ещё могу Вам вопрос задать немного не по этой теме, как мне скопировать ячейки также из одного листа в другой с помощью макроса, к примеру из листа 1 перенести адреса также в лист 2 ну и прочие значения
 
Ответить
СообщениеMikeVol, снова почему-то не хочет работать именно эта функция. Ещё могу Вам вопрос задать немного не по этой теме, как мне скопировать ячейки также из одного листа в другой с помощью макроса, к примеру из листа 1 перенести адреса также в лист 2 ну и прочие значения

Автор - egorrr907
Дата добавления - 28.02.2023 в 16:23
MikeVol Дата: Вторник, 28.02.2023, 18:42 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 299
Репутация: 51 ±
Замечаний: 0% ±

Excel LTSC 2021 EN
egorrr907, не знаю что там у вас не работает. У меня всё отрабатывает, смотрим файл. По поводу
скопировать ячейки также из одного листа в другой с помощью макроса, к примеру из листа 1 перенести адреса также в лист 2 ну и прочие значения

Это уже другая тема.
К сообщению приложен файл: 28_02_2023.xlsm (29.0 Kb)


Ученик.
 
Ответить
Сообщениеegorrr907, не знаю что там у вас не работает. У меня всё отрабатывает, смотрим файл. По поводу
скопировать ячейки также из одного листа в другой с помощью макроса, к примеру из листа 1 перенести адреса также в лист 2 ну и прочие значения

Это уже другая тема.

Автор - MikeVol
Дата добавления - 28.02.2023 в 18:42
egorrr907 Дата: Среда, 01.03.2023, 09:46 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

MikeVol, в Вашем файле удалил коды из первой строки диапазона листа 1 и на 2 листе не ставит 1
К сообщению приложен файл: 01_03_2023.xlsm (27.7 Kb)
 
Ответить
СообщениеMikeVol, в Вашем файле удалил коды из первой строки диапазона листа 1 и на 2 листе не ставит 1

Автор - egorrr907
Дата добавления - 01.03.2023 в 09:46
MikeVol Дата: Среда, 01.03.2023, 21:53 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 299
Репутация: 51 ±
Замечаний: 0% ±

Excel LTSC 2021 EN
egorrr907,
можно ли как-то задать условие что только весь диапазон пустой, а если уже что-то есть, то не ставить

Так вы же это и просили. Теперь вам надо

удалил коды из первой строки диапазона листа 1 и на 2 листе не ставит 1

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


Ученик.

Сообщение отредактировал MikeVol - Среда, 01.03.2023, 21:57
 
Ответить
Сообщениеegorrr907,
можно ли как-то задать условие что только весь диапазон пустой, а если уже что-то есть, то не ставить

Так вы же это и просили. Теперь вам надо

удалил коды из первой строки диапазона листа 1 и на 2 листе не ставит 1

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

Автор - MikeVol
Дата добавления - 01.03.2023 в 21:53
MikeVol Дата: Пятница, 03.03.2023, 11:51 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 299
Репутация: 51 ±
Замечаний: 0% ±

Excel LTSC 2021 EN
egorrr907, Здравствуйте. Ловите, на этот раз всё как вы и хотели. Не хотел выкладывать но передумал. Не сердчайте.
К сообщению приложен файл: 02_03_2023.xlsm (30.4 Kb)


Ученик.
 
Ответить
Сообщениеegorrr907, Здравствуйте. Ловите, на этот раз всё как вы и хотели. Не хотел выкладывать но передумал. Не сердчайте.

Автор - MikeVol
Дата добавления - 03.03.2023 в 11:51
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение ячеек исходя из выполнения условий (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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