Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2012, 15:05   #1
franchesko_totti
Новичок
Джуниор
 
Регистрация: 23.09.2012
Сообщений: 9
Вопрос Замена данных при совпадении

Добрый день!
Нужна помощь. Помогите пожалуйста.

Есть файл - необходимо значения в столбце Е книги "Railway" заменить на значения из столбца В книги "Кредиторы" при совпадении фамилии и инициалов (или хотя бы при совпадении фамилии, так как инициалы там криво указаны).
Вложения
Тип файла: zip Файл.zip (234.8 Кб, 99 просмотров)
franchesko_totti вне форума Ответить с цитированием
Старый 23.09.2012, 15:16   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Из

Кузнецов Александр Михайлович
Кузнецов Алексей Николаевич

можно брать любого?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.09.2012, 15:23   #3
franchesko_totti
Новичок
Джуниор
 
Регистрация: 23.09.2012
Сообщений: 9
По умолчанию

А если инициалы будут указаны как положено, то есть вариант точной замены?Если там допустим будут стоять значения не "=АА", а допустим А.А.
Если кого то одного брать то не совсем корректно получится. Но если по другому не получится то всё равно было бы очень здорово.
franchesko_totti вне форума Ответить с цитированием
Старый 23.09.2012, 15:28   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Да.
Набранное вами сообщение слишком короткое. Увеличьте ваше сообщение до 10 символов - увеличил
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.09.2012, 15:37   #5
franchesko_totti
Новичок
Джуниор
 
Регистрация: 23.09.2012
Сообщений: 9
По умолчанию

А как правильно должна быть записана формула для замены без соответствия инициалов? Дальше я может быть и сам разберусь. Просто сейчас нет возможности указать везде полные инициалы.
franchesko_totti вне форума Ответить с цитированием
Старый 23.09.2012, 15:41   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Я не специализируюсь по формулам
Пока так:
Код:
Option Explicit

Sub tt()
    Dim a(), i&, t$, tarr

    With Sheets("Кредиторы")
        a = Range(.[B2], .Range("B" & Rows.Count).End(xlUp)).Value
    End With

    With CreateObject("scripting.dictionary")
        For i = 2 To UBound(a)
            tarr = Split(a(i, 1))
            t = tarr(0) & "|" & Left(tarr(1), 1)
            .Item(UCase(t)) = a(i, 1)
        Next

        With Sheets("Railway")
            a = Range(.[E5], .Range("E" & Rows.Count).End(xlUp)).Value
        End With

        For i = 1 To UBound(a)
            a(i, 1) = Replace(a(i, 1), ".", " ")
            a(i, 1) = Replace(a(i, 1), "=", " ")
            tarr = Split(a(i, 1))
            t = tarr(0) & "|" & Left(tarr(1), 1)
            If .exists(t) Then a(i, 1) = .Item(t)
        Next
    End With

    With Sheets("Railway")
        Range(.[E5], .Range("E" & Rows.Count).End(xlUp)).Value = a
    End With

End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.09.2012, 16:22   #7
franchesko_totti
Новичок
Джуниор
 
Регистрация: 23.09.2012
Сообщений: 9
По умолчанию

Спасибо!!! А если инициалы будут правильно указаны то макрос будет находить точное соответствие?
franchesko_totti вне форума Ответить с цитированием
Старый 23.09.2012, 16:27   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Этот не будет - нужно изменять строку
Код:
 t = tarr(0) & "|" & Left(tarr(1), 1)
(2 раза).
Ну и ещё нужно смотреть, как обходить возможные ошибки, например если в списке попадётся полное имя и инициалы Остапа Бендера
И ещё - если список большой, то одних инициалов может быть уже недостаточно для точной выборки нужных строк. Может тогда лучше так и оставить с инициалами - чтоб не ошибиться?
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 23.09.2012 в 16:31.
Hugo121 вне форума Ответить с цитированием
Старый 23.09.2012, 18:18   #9
franchesko_totti
Новичок
Джуниор
 
Регистрация: 23.09.2012
Сообщений: 9
По умолчанию

Согласен) Думаю так лучше и оставить.
Спасибо!
franchesko_totti вне форума Ответить с цитированием
Старый 23.09.2012, 18:33   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Ну вот и решили задачку
Но код советую разобрать и запомнить - пригодится для решения 90% задач. Хоть с виду и простой
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение адреса страницы - при совпадении смена стиля vlad00777 JavaScript, Ajax 1 06.09.2011 20:52
Замена кода на текст при добавлении данных L777SU БД в Delphi 1 25.05.2010 16:00
Перенос данных с листов при совпадении определенных значений ячеек Тантана Microsoft Office Excel 11 21.05.2010 14:06
Поиск значений и копирование при совпадении serafim09 Microsoft Office Excel 2 24.02.2010 13:36
Перенос данных с одного листа на другой при совпадении параметров Nekota Microsoft Office Excel 5 18.02.2010 13:17