powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Элегантный способ найти/заменить
17 сообщений из 17, страница 1 из 1
Элегантный способ найти/заменить
    #38150791
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Комрады, на одном листе в столбце вписаны некие ID, на другом листе - соответствие этих ID тексту.
Задача: перенести текст на первый лист в соответствии с ID. Как сделать это в VBA красиво? Мне в голову кроме последовательного find и replace ничего не идет, но каждый цикл нужно приписывать руками (в зависимости от количества ID). Подскажите балбесу, как быть.
_____________________
А что на самом деле хотел сказать "Frost_Imp" никто не знает, так как администрация форума попросила его быть вежливым.
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38150944
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_Imp,

Ну так определяйте последний ID в столбце, и подставляйте в ваш цикл.
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151029
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLAD, так они не по порядку...
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151055
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_Impна одном листеExcel? тогда тупо ВПР()...
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151277
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, ВПР-ом и пришлось делать. Думал, есть что-нибудь покрасивее, так как ВПР - лишние телодвижения (столбец вставь, формулу протяни и т.д.).
Кстати, насчет "протягивания" формул. Мне нужно растянуть формулу до последнего значения в левом столбце. Запись макроса максимум выдает строку
Selection.AutoFill Destination:=Range("D2:D21")
которая меня не устраивает, так как сегодня на листе D21 записей, завтра будет D50.
Как растянуть формулу до последнего значения в ячейках? Программно разумеется.
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151310
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_Imp,

Я как раз и имел ввиду найти последнюю занятую строку, типо такого UsedRange.End(xlDown).Row или Range("D1:D65000").Find("").Row-1

Ну а дальше цикл и вложенный цикл пройтись и заменить. Способ не быстрый, но можно ренжи считать разом в массив. Способов много, зависит от данных, как они устроены по структуре и их колва
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151600
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, а такой вопрос (на засыпку: как можно программно найти в столбце любое десятизначное число?
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151606
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_Impнайти в столбце любое десятизначное число?Дай чёткое однозначное определение, что в данном случае "десятичное число".
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151611
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10 цифр. Целое
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151782
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ппц "чёткое однозначное определение".
Всегда 10 цифр? или от 1 до 10? Знака никогда нет? Других символов, кроме цифровых, гарантированно нет?
Видишь, сколько вопросов... и это ещё не всё...
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151875
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_Imp10 цифр. Целое
Код: vbnet
1.
LEN(STR(.Value))=10
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151954
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frost_Impнайти в столбце любое десятизначное число
Код: vbnet
1.
2.
3.
4.
5.
Dim c As Range
Set c = Columns(4).Find("??????????", , xlFormulas, xlWhole)
If Not c Is Nothing Then
    If IsNumeric(c) Then
        'нашли число из 10 цифр
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151984
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMFrost_Imp10 цифр. Целое
Код: vbnet
1.
LEN(STR(.Value))=10


"-100000000"
Казанский
Код: vbnet
1.
2.
3.
4.
5.
Dim c As Range
Set c = Columns(4).Find("??????????", , xlFormulas, xlWhole)
If Not c Is Nothing Then
    If IsNumeric(c) Then
        'нашли число из 10 цифр


"1,23456789"
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38151991
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_Impдесяти зна чное число?Akina"десятичное число"
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38152013
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina"-100000000"Ну, не будем утрировать - я предположил, что имеется в виду натуральное . А на всём множестве даже наполовину мой ответ - правильный
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38152176
Фотография i45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_Imp,

VLookup
...
Рейтинг: 0 / 0
Элегантный способ найти/заменить
    #38152198
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i45,

VLOOKUP() - это, как ни странно, и есть ВПР(), который сразу и посоветовали... :)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Элегантный способ найти/заменить
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]