Прошу помощи в создании небольшого скрипта. Есть очень большая таблица с данными, кусочек ее я приложил. Руками ее всю просто не обработать, в ней более 70000 строк. Очень прошу помощи у форумчан.
Требуется: Колонка 4 Удалить ВСЕ строки где в ячейке столбца - №4 пусто
Колонка 8 По заданным наименованиям в колонке на листе 3, Удалить найденное наименование из ячейки в колонке 8, и скопировать в эту ячейку значение из колонки 7
P.S. При работе НЕ трогать остальные колонки!!!
Прошу помощи в создании небольшого скрипта. Есть очень большая таблица с данными, кусочек ее я приложил. Руками ее всю просто не обработать, в ней более 70000 строк. Очень прошу помощи у форумчан.
Требуется: Колонка 4 Удалить ВСЕ строки где в ячейке столбца - №4 пусто
Колонка 8 По заданным наименованиям в колонке на листе 3, Удалить найденное наименование из ячейки в колонке 8, и скопировать в эту ячейку значение из колонки 7
P.S. При работе НЕ трогать остальные колонки!!!wwizard
Колонка 8 По заданным наименованиям в колонке на листе 3, Удалить найденное наименование из ячейки в колонке 8, и скопировать в эту ячейку значение из колонки 7
P.S. При работе НЕ трогать остальные колонки!!! - этого нигде нет
Колонка 8 По заданным наименованиям в колонке на листе 3, Удалить найденное наименование из ячейки в колонке 8, и скопировать в эту ячейку значение из колонки 7
P.S. При работе НЕ трогать остальные колонки!!! - этого нигде нетwwizard
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]
а если так: [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
http://prntscr.com/8w9xr8 - вот что он делает, т.е. он копирует то что не нужно заменять, а то что нужно в квадратике красном не меняет, хотя на листе 3 - http://prntscr.com/8w9yc0 - прописаны, эти же наименования что в столбце, для проверки, при нахождении которых в прайсе должно произойти копирование.
http://prntscr.com/8w9xr8 - вот что он делает, т.е. он копирует то что не нужно заменять, а то что нужно в квадратике красном не меняет, хотя на листе 3 - http://prntscr.com/8w9yc0 - прописаны, эти же наименования что в столбце, для проверки, при нахождении которых в прайсе должно произойти копирование.wwizard
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]
видимо, наоборот. Вот, пробуйте: [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
Да, все верно, только он почему-то еще и удаляет все что есть в 9ой, т.е. в соседней колонке. Вот что должно произойти: http://prntscr.com/8x08ps , НО ни в коем случае не должны исчезнуть данные в девятом столбце
Да, все верно, только он почему-то еще и удаляет все что есть в 9ой, т.е. в соседней колонке. Вот что должно произойти: http://prntscr.com/8x08ps , НО ни в коем случае не должны исчезнуть данные в девятом столбцеwwizard
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]
можно так, например: [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