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

Вход

Регистрация

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

 

= Мир MS Excel/Копировать ячейки на лист, если буфер обмена совпадает с яче - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Копировать ячейки на лист, если буфер обмена совпадает с яче
timo64uk Дата: Пятница, 27.09.2024, 17:55 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 1 ±
Замечаний: 0% ±

Office16
Добрый день. Есть Лист База и Лист Результат.
На листе База первая строка содержит данные: ПерваяA1, ВтораяB1 и ТретьяC1. Строка ниже содержит данные: ПерваяA2, ВтораяB2 и ТретьяC2.
A1 B1 C1
A2 B2 C2
Открыт лист База. Если в буфере обмена находятся данные полностью совпадающие с данными ячейки A1, т.е. "ПерваяA1", то нужно данные из соседних ячеек этой же строки скопировать на соседний Лист Результат таким образом, чтобы данные ячейки B1 скопировались в ячейку M5 (лист Результат), а
из ячейки C1 в ячейку R7 (лист Результат). И в случае, если в буфере обмена будут данные ячейки A2, то B2 в M5 (лист Результат), а C2 в R7.
Надеюсь я не перепутал имена ячеек, давно не трогал клавиатуру.
Если можно без функций и формул решить данную задачу. Искал по поискам, но лишь схожие примеры находил.
К сообщению приложен файл: 777333.xlsx (9.4 Kb)


Сообщение отредактировал timo64uk - Суббота, 28.09.2024, 02:19
 
Ответить
СообщениеДобрый день. Есть Лист База и Лист Результат.
На листе База первая строка содержит данные: ПерваяA1, ВтораяB1 и ТретьяC1. Строка ниже содержит данные: ПерваяA2, ВтораяB2 и ТретьяC2.
A1 B1 C1
A2 B2 C2
Открыт лист База. Если в буфере обмена находятся данные полностью совпадающие с данными ячейки A1, т.е. "ПерваяA1", то нужно данные из соседних ячеек этой же строки скопировать на соседний Лист Результат таким образом, чтобы данные ячейки B1 скопировались в ячейку M5 (лист Результат), а
из ячейки C1 в ячейку R7 (лист Результат). И в случае, если в буфере обмена будут данные ячейки A2, то B2 в M5 (лист Результат), а C2 в R7.
Надеюсь я не перепутал имена ячеек, давно не трогал клавиатуру.
Если можно без функций и формул решить данную задачу. Искал по поискам, но лишь схожие примеры находил.

Автор - timo64uk
Дата добавления - 27.09.2024 в 17:55
Hugo Дата: Пятница, 27.09.2024, 18:01 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Добрый день.
Можно макросом прочитать буфер обмена, поискать данные по Базе, скопировать что-то куда-то...
Но вот пока мысленно запускать макросы никто на практике не умеет, нужно что-то где-то нажать или активировать.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеДобрый день.
Можно макросом прочитать буфер обмена, поискать данные по Базе, скопировать что-то куда-то...
Но вот пока мысленно запускать макросы никто на практике не умеет, нужно что-то где-то нажать или активировать.

Автор - Hugo
Дата добавления - 27.09.2024 в 18:01
timo64uk Дата: Суббота, 28.09.2024, 01:11 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 1 ±
Замечаний: 0% ±

Office16
запускать макросы

Макросы храню в отдельной книге эксель на рабочем столе в файле Макрос.xlsm
Ссылки на макросы вынес в верхнюю панель быстрого доступа в эксель. Запускаю каждый макрос нажатием иконок на панель быстрого доступа любого рабочего файла эксель.
Я понимаю как важен пример в виде эксель файла. Сегодня приложу его.
Я надеюсь верно понял по запуску макросов.
_____________
Файл приложил к первому сообщению темы


Сообщение отредактировал timo64uk - Суббота, 28.09.2024, 02:24
 
Ответить
Сообщение
запускать макросы

Макросы храню в отдельной книге эксель на рабочем столе в файле Макрос.xlsm
Ссылки на макросы вынес в верхнюю панель быстрого доступа в эксель. Запускаю каждый макрос нажатием иконок на панель быстрого доступа любого рабочего файла эксель.
Я понимаю как важен пример в виде эксель файла. Сегодня приложу его.
Я надеюсь верно понял по запуску макросов.
_____________
Файл приложил к первому сообщению темы

Автор - timo64uk
Дата добавления - 28.09.2024 в 01:11
Hugo Дата: Суббота, 28.09.2024, 14:40 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
timo64uk, например такой код
[vba]
Код

Option Explicit

Sub CopyFromClip()
    Dim x$, c As Range
    With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        x = Replace$(.GetText(1), """", """""")
    End With
Set c = Sheets("База").Columns(1).Find(x, , xlValues, xlWhole)
If Not c Is Nothing Then
With Sheets("Результат")
.Range("M5").Value = c.Offset(, 1).Value
.Range("R7").Value = c.Offset(, 2).Value
End With
End If
End Sub
[/vba]
Код не сложный, основной вопрос по запуску/процессу - можно код выполнять по переходу на этот лист, но ведь не при каждом переходе он нужен, да и это сложно организовать если этот файл xlsx.
Если будете запускать из персональной книги кнопкой на панели или зададите горячие клавиши - тогда ОК, рабочий вариант.
P.S. кстати нужно бы как-то обохначить нашлось или нет - если есть динамики/звук то я бы наверное два разных звучка поставил чтоб знать о результате.
Или можно активировать найденную ячейку и например помечать цветом.
Смотря по задаче.
К сообщению приложен файл: 777333.xlsm (16.9 Kb)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Суббота, 28.09.2024, 14:56
 
Ответить
Сообщениеtimo64uk, например такой код
[vba]
Код

Option Explicit

Sub CopyFromClip()
    Dim x$, c As Range
    With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        x = Replace$(.GetText(1), """", """""")
    End With
Set c = Sheets("База").Columns(1).Find(x, , xlValues, xlWhole)
If Not c Is Nothing Then
With Sheets("Результат")
.Range("M5").Value = c.Offset(, 1).Value
.Range("R7").Value = c.Offset(, 2).Value
End With
End If
End Sub
[/vba]
Код не сложный, основной вопрос по запуску/процессу - можно код выполнять по переходу на этот лист, но ведь не при каждом переходе он нужен, да и это сложно организовать если этот файл xlsx.
Если будете запускать из персональной книги кнопкой на панели или зададите горячие клавиши - тогда ОК, рабочий вариант.
P.S. кстати нужно бы как-то обохначить нашлось или нет - если есть динамики/звук то я бы наверное два разных звучка поставил чтоб знать о результате.
Или можно активировать найденную ячейку и например помечать цветом.
Смотря по задаче.

Автор - Hugo
Дата добавления - 28.09.2024 в 14:40
timo64uk Дата: Суббота, 28.09.2024, 17:51 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 1 ±
Замечаний: 0% ±

Office16
Код не сложный

Спасибо. Буду пробовать.
Самое главное, хотелось понять как происходит процесс копирования на другой лист. В сети много примеров по переносу строки уеликом и минимум по ячейкам.
Да, я думал про оповещения сообщениями, но на данном этапе визуально буду проверять.
 
Ответить
Сообщение
Код не сложный

Спасибо. Буду пробовать.
Самое главное, хотелось понять как происходит процесс копирования на другой лист. В сети много примеров по переносу строки уеликом и минимум по ячейкам.
Да, я думал про оповещения сообщениями, но на данном этапе визуально буду проверять.

Автор - timo64uk
Дата добавления - 28.09.2024 в 17:51
Hugo Дата: Суббота, 28.09.2024, 19:10 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Здесь копируется не ячейка, а её значение. Т.е. всякие шрифты/заливки/форматы не копируются.
Но если нужно - то можно и копировать ячейку целиком, но Вы просили копировать данные.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЗдесь копируется не ячейка, а её значение. Т.е. всякие шрифты/заливки/форматы не копируются.
Но если нужно - то можно и копировать ячейку целиком, но Вы просили копировать данные.

Автор - Hugo
Дата добавления - 28.09.2024 в 19:10
timo64uk Дата: Воскресенье, 29.09.2024, 01:34 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 1 ±
Замечаний: 0% ±

Office16
не ячейка
понял, данных достаточно. формат данных из ячейки не важен.
Хорошо, что в вашем коде не используется ThisBook/Sheet как привязка к активному листу.
По оповещению подумал, и представил, что найденных данных (в буфере которые) в ячейках столбца может быть несколько, как на практике обычно и бывает.
Допустим в данном примере А1 и В1 содержат "Иванов", и в буфере обмена после Ctrl+C находится "Иванов", запускаю макрос... В итоге в М5 и R7 скопируются данные одного из Ивановых.
Возможен ли в данном случае сценарий с заполнением нижестоящих ячеек М6, М7,.. И соответственно R8, R9, ... ?


Сообщение отредактировал timo64uk - Воскресенье, 29.09.2024, 03:04
 
Ответить
Сообщение
не ячейка
понял, данных достаточно. формат данных из ячейки не важен.
Хорошо, что в вашем коде не используется ThisBook/Sheet как привязка к активному листу.
По оповещению подумал, и представил, что найденных данных (в буфере которые) в ячейках столбца может быть несколько, как на практике обычно и бывает.
Допустим в данном примере А1 и В1 содержат "Иванов", и в буфере обмена после Ctrl+C находится "Иванов", запускаю макрос... В итоге в М5 и R7 скопируются данные одного из Ивановых.
Возможен ли в данном случае сценарий с заполнением нижестоящих ячеек М6, М7,.. И соответственно R8, R9, ... ?

Автор - timo64uk
Дата добавления - 29.09.2024 в 01:34
timo64uk Дата: Воскресенье, 29.09.2024, 10:05 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 1 ±
Замечаний: 0% ±

Office16
ковычку убрал
[vba]
Код
x = Replace$(.GetText(1), """", """")
[/vba]
 
Ответить
Сообщение ковычку убрал
[vba]
Код
x = Replace$(.GetText(1), """", """")
[/vba]

Автор - timo64uk
Дата добавления - 29.09.2024 в 10:05
Hugo Дата: Воскресенье, 29.09.2024, 10:07 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
В этом коде:
1. ищет ячейку целиком, если только содержит среди прочего, то не найдёт. Но можно изменить xlWhole на xlPart и будет искать частично.
2. ищет только до первого найденного, но можете дописать поиск всех, в хелпе по Find этот пример подробно описан.

Но если искать всех и заполнять столько строк сколько найдено - я бы наверное через массив циклом проверял, если данных до 100к строк и совпадений может быть много.
Или (если нужен точный поиск по значению ячеек) вообще глобально в начале техпроцесса загнать координаты всех данных в словарь, и затем уже без всяких поисков брать сразу всё что нужно из памяти пока не перезагрузишь Эксель.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеВ этом коде:
1. ищет ячейку целиком, если только содержит среди прочего, то не найдёт. Но можно изменить xlWhole на xlPart и будет искать частично.
2. ищет только до первого найденного, но можете дописать поиск всех, в хелпе по Find этот пример подробно описан.

Но если искать всех и заполнять столько строк сколько найдено - я бы наверное через массив циклом проверял, если данных до 100к строк и совпадений может быть много.
Или (если нужен точный поиск по значению ячеек) вообще глобально в начале техпроцесса загнать координаты всех данных в словарь, и затем уже без всяких поисков брать сразу всё что нужно из памяти пока не перезагрузишь Эксель.

Автор - Hugo
Дата добавления - 29.09.2024 в 10:07
Hugo Дата: Воскресенье, 29.09.2024, 10:13 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
ковычку убрал
- да, это от примера осталось где с адресами ячеек было дело, тут наверное лишнее.
Основное - GetText(1), если там получаете то значение что нужно искать, то всякие кавычки/замены лишнее.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
ковычку убрал
- да, это от примера осталось где с адресами ячеек было дело, тут наверное лишнее.
Основное - GetText(1), если там получаете то значение что нужно искать, то всякие кавычки/замены лишнее.

Автор - Hugo
Дата добавления - 29.09.2024 в 10:13
i691198 Дата: Воскресенье, 29.09.2024, 12:00 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 349
Репутация: 110 ±
Замечаний: 0% ±

Hugo, Обнаружил одну особенность, при копировании в буфер значений ячеек в конце добавляются два символа - 10 и 13, перенос строки и возврат каретки. Может быть есть смысл удалять эти непечатаемые символы методом WorksheetFunction.Clean.
 
Ответить
СообщениеHugo, Обнаружил одну особенность, при копировании в буфер значений ячеек в конце добавляются два символа - 10 и 13, перенос строки и возврат каретки. Может быть есть смысл удалять эти непечатаемые символы методом WorksheetFunction.Clean.

Автор - i691198
Дата добавления - 29.09.2024 в 12:00
Hugo Дата: Воскресенье, 29.09.2024, 12:26 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

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


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщениеi691198, ну тут ведь не было сказано откуда что копировали, может из содержимого ячеек, может из текста со стороны...
А так можно просто на всякий заменять в содержимом эти символы на ничего. Если конечно не нужно чтоб они были внутри искомого - т.е. нужно видеть задачу целиком - что, откуда, куда, зачем вообще.

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

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