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

Вход

Регистрация

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

 

= Мир MS Excel/Выстроить соответствующие показатели по значению - Мир MS Excel

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

Excel 2010
На первом листе есть значения. По одному из них (в этом случае по значению = fffff) Нужно на листе 2 напротив него же выстроить соответствующие ему значения. Как, например, на листе1 в 28 ряду.
Предполагается, что эти значения на листе1 по расположению будут "константны", т.е. никуда не будут смещаться.
А само значение, по которому нужно будет искать - будет выше. ниже в столбце 1 листа2.
Подскажите, пожалуйста, как это сделать?
В приложенном примере мой "код"...
К сообщению приложен файл: 4496698.xlsm (18.0 Kb)


Сообщение отредактировал ant6729 - Суббота, 13.05.2017, 01:39
 
Ответить
СообщениеНа первом листе есть значения. По одному из них (в этом случае по значению = fffff) Нужно на листе 2 напротив него же выстроить соответствующие ему значения. Как, например, на листе1 в 28 ряду.
Предполагается, что эти значения на листе1 по расположению будут "константны", т.е. никуда не будут смещаться.
А само значение, по которому нужно будет искать - будет выше. ниже в столбце 1 листа2.
Подскажите, пожалуйста, как это сделать?
В приложенном примере мой "код"...

Автор - ant6729
Дата добавления - 13.05.2017 в 01:30
Pelena Дата: Суббота, 13.05.2017, 09:02 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19160
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
И Вам здравствуйте.
Не уверена, что правильно поняла. И совсем не поняла, откуда брать третье значение (18)
К сообщению приложен файл: 9237932.xlsm (21.9 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеИ Вам здравствуйте.
Не уверена, что правильно поняла. И совсем не поняла, откуда брать третье значение (18)

Автор - Pelena
Дата добавления - 13.05.2017 в 09:02
ant6729 Дата: Суббота, 13.05.2017, 11:53 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Здравствуйте)
Все правильно, Pelena, спасибо!!!
(18) - это lr-6 (условно так)

PS
Единственное, что не понятно....
Так это вот...

[vba]
Код
Sub rrr()
Dim i&

lr = Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To lr
If Sheets("Лист1").Cells(i, 10).Value = "r" Then
Sheets("Лист1").Cells(i, 17).Offset(-1, 0).Value = Sheets("Лист1").Cells(i, 11).Value
End If
Next i

End Sub
[/vba]

.... тут оно ищет соответствующие показатели, а в данном примере этой темы с этой логикой искать и работать не хочет...
Эта "логика" с cells(i,x) она что ли только в рамках одного рабочего листа работает?
Хотя есть пример, что она сопоставляет значения
Пример из другой темы, код Boroda_:
[vba]
Код
Sub rrr()
    lr1 = Sheets("Лист1").Cells(Rows.Count, 6).End(xlUp).Row
    lr2 = Sheets("Лист2").Cells(Rows.Count, 2).End(xlUp).Row
    For i = 1 To lr1
        For J = 1 To lr2
            If Sheets("Лист2").Cells(J, 2).Value = Sheets("Лист1").Cells(i, 5).Value Then
                Sheets("Лист1").Cells(i, 5).Interior.Color = RGB(204, 204, 255)
            End If
        Next J
    Next i
End Sub
[/vba]

То есть я ее по разном использовал уже в данном примере, но не хотело оно ставить напротив значения, которое ищу (это конкретное значение с лист1 из конкретной ячейки = fffff) в лист2 offset ами значения нужных ячеек...

Я тут как-то не понял...

Pelena, еще раз спасибо!!!


Сообщение отредактировал ant6729 - Суббота, 13.05.2017, 12:00
 
Ответить
СообщениеЗдравствуйте)
Все правильно, Pelena, спасибо!!!
(18) - это lr-6 (условно так)

PS
Единственное, что не понятно....
Так это вот...

[vba]
Код
Sub rrr()
Dim i&

lr = Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To lr
If Sheets("Лист1").Cells(i, 10).Value = "r" Then
Sheets("Лист1").Cells(i, 17).Offset(-1, 0).Value = Sheets("Лист1").Cells(i, 11).Value
End If
Next i

End Sub
[/vba]

.... тут оно ищет соответствующие показатели, а в данном примере этой темы с этой логикой искать и работать не хочет...
Эта "логика" с cells(i,x) она что ли только в рамках одного рабочего листа работает?
Хотя есть пример, что она сопоставляет значения
Пример из другой темы, код Boroda_:
[vba]
Код
Sub rrr()
    lr1 = Sheets("Лист1").Cells(Rows.Count, 6).End(xlUp).Row
    lr2 = Sheets("Лист2").Cells(Rows.Count, 2).End(xlUp).Row
    For i = 1 To lr1
        For J = 1 To lr2
            If Sheets("Лист2").Cells(J, 2).Value = Sheets("Лист1").Cells(i, 5).Value Then
                Sheets("Лист1").Cells(i, 5).Interior.Color = RGB(204, 204, 255)
            End If
        Next J
    Next i
End Sub
[/vba]

То есть я ее по разном использовал уже в данном примере, но не хотело оно ставить напротив значения, которое ищу (это конкретное значение с лист1 из конкретной ячейки = fffff) в лист2 offset ами значения нужных ячеек...

Я тут как-то не понял...

Pelena, еще раз спасибо!!!

Автор - ant6729
Дата добавления - 13.05.2017 в 11:53
Pelena Дата: Суббота, 13.05.2017, 12:09 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19160
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
В первом случае один цикл, одна переменная для номера строки i, поэтому если Вы укажете другой лист, ячейка будет браться с другого листа, но с той же строки i. А это неверно, ведь не факт, что fffff и на первом, и на втором листе находятся на одной строке.
Во втором случае две переменные i и j. Одна для перебора строк на первом листе, а другая - на втором.
[p.s.]Если я правильно поняла вопрос[/p.s.]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВ первом случае один цикл, одна переменная для номера строки i, поэтому если Вы укажете другой лист, ячейка будет браться с другого листа, но с той же строки i. А это неверно, ведь не факт, что fffff и на первом, и на втором листе находятся на одной строке.
Во втором случае две переменные i и j. Одна для перебора строк на первом листе, а другая - на втором.
[p.s.]Если я правильно поняла вопрос[/p.s.]

Автор - Pelena
Дата добавления - 13.05.2017 в 12:09
ant6729 Дата: Суббота, 13.05.2017, 12:32 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Допустим...
[vba]
Код
Sub bnm()
Dim i&, j&, a As String, b As String, c&, d&

lr1 = Sheets("Лист1").Cells(Rows.Count, 3).End(xlUp).Row

a = Sheets("Лист1").Cells(1, 5).Value
b = Sheets("Лист1").Cells(3, 5).Value
c = Sheets("Лист1").Cells(2, 10).Value
d = lr1

If Sheets("Лист2").Cells(i, 1).Value = Sheets("Лист1").Cells(j, 5).Value Then

Sheets("Лист2").Cells(i, 3).Value = a
Sheets("Лист2").Cells(i, 4).Value = b
Sheets("Лист2").Cells(i, 5).Value = c

End If
End Sub
[/vba]

Вот строка:

[vba]
Код
If Sheets("Лист2").Cells(i, 1).Value = Sheets("Лист1").Cells(j, 5).Value Then
[/vba]

Перебираются ячейки в i листа2 и сравниваются с j на лист1 и по идее она находит искомое значение....ffff
После этого выполняется Then...но напротив i в лист2 ставить указанные значения с лист1 не хочет...

В
[vba]
Код

If Sheets("Лист2").Cells(J, 2).Value = Sheets("Лист1").Cells(i, 5).Value Then
                Sheets("Лист1").Cells(i, 5).Interior.Color = RGB(204, 204, 255)
[/vba]
действие выполнялось... а у меня не захотело...
Я понимаю, что макрос мастера боится... но не настолько...


Сообщение отредактировал ant6729 - Суббота, 13.05.2017, 12:39
 
Ответить
СообщениеДопустим...
[vba]
Код
Sub bnm()
Dim i&, j&, a As String, b As String, c&, d&

lr1 = Sheets("Лист1").Cells(Rows.Count, 3).End(xlUp).Row

a = Sheets("Лист1").Cells(1, 5).Value
b = Sheets("Лист1").Cells(3, 5).Value
c = Sheets("Лист1").Cells(2, 10).Value
d = lr1

If Sheets("Лист2").Cells(i, 1).Value = Sheets("Лист1").Cells(j, 5).Value Then

Sheets("Лист2").Cells(i, 3).Value = a
Sheets("Лист2").Cells(i, 4).Value = b
Sheets("Лист2").Cells(i, 5).Value = c

End If
End Sub
[/vba]

Вот строка:

[vba]
Код
If Sheets("Лист2").Cells(i, 1).Value = Sheets("Лист1").Cells(j, 5).Value Then
[/vba]

Перебираются ячейки в i листа2 и сравниваются с j на лист1 и по идее она находит искомое значение....ffff
После этого выполняется Then...но напротив i в лист2 ставить указанные значения с лист1 не хочет...

В
[vba]
Код

If Sheets("Лист2").Cells(J, 2).Value = Sheets("Лист1").Cells(i, 5).Value Then
                Sheets("Лист1").Cells(i, 5).Interior.Color = RGB(204, 204, 255)
[/vba]
действие выполнялось... а у меня не захотело...
Я понимаю, что макрос мастера боится... но не настолько...

Автор - ant6729
Дата добавления - 13.05.2017 в 12:32
RAN Дата: Суббота, 13.05.2017, 12:35 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
макрос мастера боится... но не настолько...

Нет, не настолько, еще сильнее. :D
Особенно, когда мастер дает ЦУ макросу "Поди туда, не знаю куда, сделай то, не знаю что".


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
макрос мастера боится... но не настолько...

Нет, не настолько, еще сильнее. :D
Особенно, когда мастер дает ЦУ макросу "Поди туда, не знаю куда, сделай то, не знаю что".

Автор - RAN
Дата добавления - 13.05.2017 в 12:35
ant6729 Дата: Суббота, 13.05.2017, 12:49 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Да, самоиронизирую...

все...

[vba]
Код

Sub bnm()
Dim i&, j&, a As String, b As String, c&, d&

lr1 = Sheets("Лист1").Cells(Rows.Count, 5).End(xlUp).Row
lr2 = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row

a = Sheets("Лист1").Cells(1, 5).Value
b = Sheets("Лист1").Cells(3, 5).Value
c = Sheets("Лист1").Cells(2, 10).Value
d = lr1 - 6

For i = 1 To lr1
        For j = 1 To lr2
            
            If Sheets("Лист2").Cells(i, 1).Value = Sheets("Лист1").Cells(j, 5).Value Then

Sheets("Лист2").Cells(i, 3).Value = a
Sheets("Лист2").Cells(i, 4).Value = c
Sheets("Лист2").Cells(i, 5).Value = d
                        
            End If
        Next j
    Next i

End Sub
[/vba]

Дошел)


Сообщение отредактировал ant6729 - Суббота, 13.05.2017, 12:51
 
Ответить
СообщениеДа, самоиронизирую...

все...

[vba]
Код

Sub bnm()
Dim i&, j&, a As String, b As String, c&, d&

lr1 = Sheets("Лист1").Cells(Rows.Count, 5).End(xlUp).Row
lr2 = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row

a = Sheets("Лист1").Cells(1, 5).Value
b = Sheets("Лист1").Cells(3, 5).Value
c = Sheets("Лист1").Cells(2, 10).Value
d = lr1 - 6

For i = 1 To lr1
        For j = 1 To lr2
            
            If Sheets("Лист2").Cells(i, 1).Value = Sheets("Лист1").Cells(j, 5).Value Then

Sheets("Лист2").Cells(i, 3).Value = a
Sheets("Лист2").Cells(i, 4).Value = c
Sheets("Лист2").Cells(i, 5).Value = d
                        
            End If
        Next j
    Next i

End Sub
[/vba]

Дошел)

Автор - ant6729
Дата добавления - 13.05.2017 в 12:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выстроить соответствующие показатели по значению (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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