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

Вход

Регистрация

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

 

= Мир MS Excel/Выбор данных для копирования в зависимости от значения. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выбор данных для копирования в зависимости от значения. (Макросы/Sub)
Выбор данных для копирования в зависимости от значения.
Tyoma Дата: Вторник, 13.08.2019, 14:19 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Выбор данных для копирования в зависимости от значения в другой ячейке.
При условии в ячейки B48-1 то фамилия берётся книги база, лист общие ячейка В2 а буква с ячейки В3, а если ячейка B48-2 то фамилия берётся книги база, лист общие ячейка В2 а буква с ячейки В2 %) .
Примеры прикрепляю.
Заранее спасибо yes !
К сообщению приложен файл: 7736368.xlsm(34.8 Kb) · 5542632.xlsx(12.3 Kb)
 
Ответить
СообщениеВыбор данных для копирования в зависимости от значения в другой ячейке.
При условии в ячейки B48-1 то фамилия берётся книги база, лист общие ячейка В2 а буква с ячейки В3, а если ячейка B48-2 то фамилия берётся книги база, лист общие ячейка В2 а буква с ячейки В2 %) .
Примеры прикрепляю.
Заранее спасибо yes !

Автор - Tyoma
Дата добавления - 13.08.2019 в 14:19
_Boroda_ Дата: Вторник, 13.08.2019, 15:10 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15572
Репутация: 6075 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вы ничего в описании не перепутали? Фамилию из В2 берем или из В1?

строку 54 перепишите так
[vba]
Код
ProtocolBook.Worksheets(ProtocolSheet).Cells(40, 6) = EtalonBook.Worksheets(EtalonSheet).Cells(2, 2 - (Cells(48, 2) = 2))
[/vba]
Или так
[vba]
Код
        If ProtocolBook.Worksheets(ProtocolSheet).Cells(48, 2) = 2 Then
            r_ = 2
        Else
            r_ = 3
        End If
        ProtocolBook.Worksheets(ProtocolSheet).Cells(40, 6) = EtalonBook.Worksheets(EtalonSheet).Cells(2, r_)
[/vba]

И да, у Вас кнопка запуска макроса находится в активной книге на том же листе, который заполняется, поэтому вот это
[vba]
Код
ProtocolBook.Worksheets(ProtocolSheet).
[/vba]лишнее везде
К сообщению приложен файл: 7736368_1.xlsm(33.1 Kb)


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

строку 54 перепишите так
[vba]
Код
ProtocolBook.Worksheets(ProtocolSheet).Cells(40, 6) = EtalonBook.Worksheets(EtalonSheet).Cells(2, 2 - (Cells(48, 2) = 2))
[/vba]
Или так
[vba]
Код
        If ProtocolBook.Worksheets(ProtocolSheet).Cells(48, 2) = 2 Then
            r_ = 2
        Else
            r_ = 3
        End If
        ProtocolBook.Worksheets(ProtocolSheet).Cells(40, 6) = EtalonBook.Worksheets(EtalonSheet).Cells(2, r_)
[/vba]

И да, у Вас кнопка запуска макроса находится в активной книге на том же листе, который заполняется, поэтому вот это
[vba]
Код
ProtocolBook.Worksheets(ProtocolSheet).
[/vba]лишнее везде

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

Excel 2016
Вы ничего в описании не перепутали? Фамилию из В2 берем или из В1?

Да извиняюсь фамилию берём с ячейки B1, а вот букву при условии в ячейки B48 если =1 то с ячейки B2, а если B48=2 то с ячейки В3, фамилия остаётся такая же с В1. Сейчас при условии ячейки В48 =1 ячейка F40 буква пустая, а должна быть m.
 
Ответить
Сообщение
Вы ничего в описании не перепутали? Фамилию из В2 берем или из В1?

Да извиняюсь фамилию берём с ячейки B1, а вот букву при условии в ячейки B48 если =1 то с ячейки B2, а если B48=2 то с ячейки В3, фамилия остаётся такая же с В1. Сейчас при условии ячейки В48 =1 ячейка F40 буква пустая, а должна быть m.

Автор - Tyoma
Дата добавления - 13.08.2019 в 16:11
_Boroda_ Дата: Вторник, 13.08.2019, 16:13 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15572
Репутация: 6075 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вы мой файл пробовали запускать?


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

Автор - _Boroda_
Дата добавления - 13.08.2019 в 16:13
Tyoma Дата: Вторник, 13.08.2019, 16:26 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Вы мой файл пробовали запускать?

Да запускал...


Сообщение отредактировал Tyoma - Вторник, 13.08.2019, 17:00
 
Ответить
Сообщение
Вы мой файл пробовали запускать?

Да запускал...

Автор - Tyoma
Дата добавления - 13.08.2019 в 16:26
_Boroda_ Дата: Вторник, 13.08.2019, 17:24 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15572
Репутация: 6075 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Сейчас при условии ячейки В48 =1 ячейка F40 буква пустая, а должна быть m.

Не может такого быть. Значит где-то что-то в файлах не так
Попробуйте этот файл для 1 и для 2. Будет выскакивать сообщение с номером строки, откуда берем значение. Для 2 должно быть 2, а для 2 должно быть 3
К сообщению приложен файл: 7736368_2.xlsm(35.5 Kb)


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

Не может такого быть. Значит где-то что-то в файлах не так
Попробуйте этот файл для 1 и для 2. Будет выскакивать сообщение с номером строки, откуда берем значение. Для 2 должно быть 2, а для 2 должно быть 3

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

Excel 2016
Излишнее цитирование удалено администрацией - это нарушение п.5j Правил форума
Да выскакивает. А всё понял, нужно что бы брало букву с B3 ячейки а сейчас берёт с С2 ячейки как в примере книга база, вкладка общее.


Сообщение отредактировал Tyoma - Вторник, 13.08.2019, 18:34
 
Ответить
СообщениеИзлишнее цитирование удалено администрацией - это нарушение п.5j Правил форума
Да выскакивает. А всё понял, нужно что бы брало букву с B3 ячейки а сейчас берёт с С2 ячейки как в примере книга база, вкладка общее.

Автор - Tyoma
Дата добавления - 13.08.2019 в 18:10
_Boroda_ Дата: Среда, 14.08.2019, 08:44 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15572
Репутация: 6075 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Тьфу. Конечно. Наоборот должно быть
Не [vba]
Код
Cells(2, r_)
'или
Cells(2, 2 - (Cells(48, 2) = 2))
[/vba]
, а [vba]
Код
Cells(r_, 2)
'или
Cells2 - (Cells(48, 2) = 2), 0)
[/vba]
К сообщению приложен файл: 7736368_3.xlsm(33.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТьфу. Конечно. Наоборот должно быть
Не [vba]
Код
Cells(2, r_)
'или
Cells(2, 2 - (Cells(48, 2) = 2))
[/vba]
, а [vba]
Код
Cells(r_, 2)
'или
Cells2 - (Cells(48, 2) = 2), 0)
[/vba]

Автор - _Boroda_
Дата добавления - 14.08.2019 в 08:44
Tyoma Дата: Среда, 14.08.2019, 11:51 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Всё работает, огромное спасибо respect !!!
И да, у Вас кнопка запуска макроса находится в активной книге на том же листе, который заполняется, поэтому вот это
ProtocolBook.Worksheets(ProtocolSheet).
лишнее везде


Это где надо удалять что то не понял :blink: :eek: ??
 
Ответить
СообщениеВсё работает, огромное спасибо respect !!!
И да, у Вас кнопка запуска макроса находится в активной книге на том же листе, который заполняется, поэтому вот это
ProtocolBook.Worksheets(ProtocolSheet).
лишнее везде


Это где надо удалять что то не понял :blink: :eek: ??

Автор - Tyoma
Дата добавления - 14.08.2019 в 11:51
_Boroda_ Дата: Среда, 14.08.2019, 12:18 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15572
Репутация: 6075 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Везде :)
И это не надо, это можно удалять
вместо
[vba]
Код
ProtocolBook.Worksheets(ProtocolSheet).Cells(45, 4) = EtalonBook.Worksheets(EtalonSheet).Cells(4, 2)
[/vba]
пишем
[vba]
Код
Cells(45, 4) = EtalonBook.Worksheets(EtalonSheet).Cells(4, 2)
[/vba]
Примерно вот так


И кстати, прочитайте про объявление переменных. У Вас эта строка
[vba]
Код
Dim ProtocolSheet, EtalonSheet As String
[/vba]стрингом делает только Эталон, а Протокол у Вас вариант
К сообщению приложен файл: 7736368_4.xlsm(33.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВезде :)
И это не надо, это можно удалять
вместо
[vba]
Код
ProtocolBook.Worksheets(ProtocolSheet).Cells(45, 4) = EtalonBook.Worksheets(EtalonSheet).Cells(4, 2)
[/vba]
пишем
[vba]
Код
Cells(45, 4) = EtalonBook.Worksheets(EtalonSheet).Cells(4, 2)
[/vba]
Примерно вот так


И кстати, прочитайте про объявление переменных. У Вас эта строка
[vba]
Код
Dim ProtocolSheet, EtalonSheet As String
[/vba]стрингом делает только Эталон, а Протокол у Вас вариант

Автор - _Boroda_
Дата добавления - 14.08.2019 в 12:18
Tyoma Дата: Среда, 14.08.2019, 13:10 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
А всё понял спасибо ;) !
 
Ответить
СообщениеА всё понял спасибо ;) !

Автор - Tyoma
Дата добавления - 14.08.2019 в 13:10
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выбор данных для копирования в зависимости от значения. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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