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

Вход

Регистрация

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

 

= Мир MS Excel/Замещение одних ячеек другими с проверкой - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замещение одних ячеек другими с проверкой (Макросы/Sub)
Замещение одних ячеек другими с проверкой
wwizard Дата: Вторник, 27.10.2015, 20:11 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Прошу помощи в создании небольшого скрипта. Есть очень большая таблица с данными, кусочек ее я приложил.
Руками ее всю просто не обработать, в ней более 70000 строк. Очень прошу помощи у форумчан.

Требуется:
Колонка 4
Удалить ВСЕ строки где в ячейке столбца - №4 пусто

Колонка 8
По заданным наименованиям в колонке на листе 3, Удалить найденное наименование из ячейки в колонке 8, и скопировать в эту ячейку значение из колонки 7

P.S. При работе НЕ трогать остальные колонки!!!
К сообщению приложен файл: 0795674.xlsx (13.7 Kb)


Сообщение отредактировал wwizard - Вторник, 27.10.2015, 20:13
 
Ответить
СообщениеПрошу помощи в создании небольшого скрипта. Есть очень большая таблица с данными, кусочек ее я приложил.
Руками ее всю просто не обработать, в ней более 70000 строк. Очень прошу помощи у форумчан.

Требуется:
Колонка 4
Удалить ВСЕ строки где в ячейке столбца - №4 пусто

Колонка 8
По заданным наименованиям в колонке на листе 3, Удалить найденное наименование из ячейки в колонке 8, и скопировать в эту ячейку значение из колонки 7

P.S. При работе НЕ трогать остальные колонки!!!

Автор - wwizard
Дата добавления - 27.10.2015 в 20:11
Serge_007 Дата: Вторник, 27.10.2015, 22:48 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Удалить ВСЕ строки
А поиском воспользоваться?

Автор - Serge_007
Дата добавления - 27.10.2015 в 22:48
wwizard Дата: Среда, 28.10.2015, 00:16 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Воспользовался, и ничего не нашел под мою задачу.
 
Ответить
СообщениеВоспользовался, и ничего не нашел под мою задачу.

Автор - wwizard
Дата добавления - 28.10.2015 в 00:16
wwizard Дата: Среда, 28.10.2015, 00:20 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Колонка 8
По заданным наименованиям в колонке на листе 3, Удалить найденное наименование из ячейки в колонке 8, и скопировать в эту ячейку значение из колонки 7

P.S. При работе НЕ трогать остальные колонки!!! - этого нигде нет
 
Ответить
СообщениеКолонка 8
По заданным наименованиям в колонке на листе 3, Удалить найденное наименование из ячейки в колонке 8, и скопировать в эту ячейку значение из колонки 7

P.S. При работе НЕ трогать остальные колонки!!! - этого нигде нет

Автор - wwizard
Дата добавления - 28.10.2015 в 00:20
nilem Дата: Среда, 28.10.2015, 07:34 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
а если так:
[vba]
Код
Sub ertert()
Dim ShAdr$: Application.ScreenUpdating = False
With Sheets("Лист3")
    ShAdr = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Address(, , xlR1C1)
End With
With Sheets("PRICE")
    With .Range("H1", .Cells(Rows.Count, 8).End(xlUp))
        .Offset(, 1).FormulaR1C1 = _
        "=IF(ISNA(MATCH(RC[-1],Лист3!" & ShAdr & ",0)),RC[-2],RC[-1])"
        .Value = .Offset(, 1).Value
        .Offset(, 1).ClearContents
    End With
End With: Application.ScreenUpdating = True
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеа если так:
[vba]
Код
Sub ertert()
Dim ShAdr$: Application.ScreenUpdating = False
With Sheets("Лист3")
    ShAdr = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Address(, , xlR1C1)
End With
With Sheets("PRICE")
    With .Range("H1", .Cells(Rows.Count, 8).End(xlUp))
        .Offset(, 1).FormulaR1C1 = _
        "=IF(ISNA(MATCH(RC[-1],Лист3!" & ShAdr & ",0)),RC[-2],RC[-1])"
        .Value = .Offset(, 1).Value
        .Offset(, 1).ClearContents
    End With
End With: Application.ScreenUpdating = True
End Sub
[/vba]

Автор - nilem
Дата добавления - 28.10.2015 в 07:34
wwizard Дата: Среда, 28.10.2015, 15:58 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Вот такая ошибка пишет: http://prntscr.com/8w9egr
[moder]Не надо цитировать пост целиком. Это нарушение Правил форума[/moder]


Сообщение отредактировал Pelena - Среда, 28.10.2015, 16:21
 
Ответить
СообщениеВот такая ошибка пишет: http://prntscr.com/8w9egr
[moder]Не надо цитировать пост целиком. Это нарушение Правил форума[/moder]

Автор - wwizard
Дата добавления - 28.10.2015 в 15:58
wwizard Дата: Среда, 28.10.2015, 16:48 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

http://prntscr.com/8w9xr8 - вот что он делает, т.е. он копирует то что не нужно заменять, а то что нужно в квадратике красном не меняет, хотя на листе 3 - http://prntscr.com/8w9yc0 - прописаны, эти же наименования что в столбце, для проверки, при нахождении которых в прайсе должно произойти копирование.
 
Ответить
Сообщениеhttp://prntscr.com/8w9xr8 - вот что он делает, т.е. он копирует то что не нужно заменять, а то что нужно в квадратике красном не меняет, хотя на листе 3 - http://prntscr.com/8w9yc0 - прописаны, эти же наименования что в столбце, для проверки, при нахождении которых в прайсе должно произойти копирование.

Автор - wwizard
Дата добавления - 28.10.2015 в 16:48
nilem Дата: Среда, 28.10.2015, 17:25 | Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
видимо, наоборот. Вот, пробуйте:
[vba]
Код
Sub ertert()
Dim ShAdr$: Application.ScreenUpdating = False
With Sheets("Лист3")
    ShAdr = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Address(, , xlR1C1)
End With
With Sheets("PRICE")
    With .Range("H1", .Cells(Rows.Count, 8).End(xlUp))
        .Offset(, 1).FormulaR1C1 = _
        "=IF(ISNA(MATCH(RC[-1],Лист3!" & ShAdr & ",0)),RC[-1],RC[-2])"
        .Value = .Offset(, 1).Value
        .Offset(, 1).ClearContents
    End With
End With: Application.ScreenUpdating = True
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениевидимо, наоборот. Вот, пробуйте:
[vba]
Код
Sub ertert()
Dim ShAdr$: Application.ScreenUpdating = False
With Sheets("Лист3")
    ShAdr = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Address(, , xlR1C1)
End With
With Sheets("PRICE")
    With .Range("H1", .Cells(Rows.Count, 8).End(xlUp))
        .Offset(, 1).FormulaR1C1 = _
        "=IF(ISNA(MATCH(RC[-1],Лист3!" & ShAdr & ",0)),RC[-1],RC[-2])"
        .Value = .Offset(, 1).Value
        .Offset(, 1).ClearContents
    End With
End With: Application.ScreenUpdating = True
End Sub
[/vba]

Автор - nilem
Дата добавления - 28.10.2015 в 17:25
wwizard Дата: Пятница, 30.10.2015, 13:52 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Да, все верно, только он почему-то еще и удаляет все что есть в 9ой, т.е. в соседней колонке.
Вот что должно произойти: http://prntscr.com/8x08ps , НО ни в коем случае не должны исчезнуть данные в девятом столбце
К сообщению приложен файл: proba2.xlsm (19.4 Kb)
 
Ответить
СообщениеДа, все верно, только он почему-то еще и удаляет все что есть в 9ой, т.е. в соседней колонке.
Вот что должно произойти: http://prntscr.com/8x08ps , НО ни в коем случае не должны исчезнуть данные в девятом столбце

Автор - wwizard
Дата добавления - 30.10.2015 в 13:52
nilem Дата: Понедельник, 02.11.2015, 07:37 | Сообщение № 10
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
можно так, например:
[vba]
Код
Sub ertert()
Dim ShAdr$: Application.ScreenUpdating = False
With Sheets("Лист3")
    ShAdr = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Address(, , xlR1C1)
End With
With Sheets("PRICE")
    .Columns(9).Insert
    With .Range("H1", .Cells(Rows.Count, 8).End(xlUp))
        .Offset(, 1).FormulaR1C1 = _
        "=IF(ISNA(MATCH(RC[-1],Лист3!" & ShAdr & ",0)),RC[-1],RC[-2])"
        .Value = .Offset(, 1).Value
    End With
    .Columns(9).Delete
End With: Application.ScreenUpdating = True
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеможно так, например:
[vba]
Код
Sub ertert()
Dim ShAdr$: Application.ScreenUpdating = False
With Sheets("Лист3")
    ShAdr = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Address(, , xlR1C1)
End With
With Sheets("PRICE")
    .Columns(9).Insert
    With .Range("H1", .Cells(Rows.Count, 8).End(xlUp))
        .Offset(, 1).FormulaR1C1 = _
        "=IF(ISNA(MATCH(RC[-1],Лист3!" & ShAdr & ",0)),RC[-1],RC[-2])"
        .Value = .Offset(, 1).Value
    End With
    .Columns(9).Delete
End With: Application.ScreenUpdating = True
End Sub
[/vba]

Автор - nilem
Дата добавления - 02.11.2015 в 07:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замещение одних ячеек другими с проверкой (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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