Доброго времени суток, глубокоуважаемые форумчане!
Подскажите пожалуйста, какие строки кода нужно добавить в макрос по удалению свыше 12 символов (от 13 и далее) во время поиска значений с листа "1", при вставке этих найденных значений в столбец "C" листа "2" c помощью INDEX. Предпочту готовое решение.
Sub 888() Application.ScreenUpdating = False a = Sheets("2").Cells(Rows.Count, "a").End(xlUp).Row If a > 1 Then Sheets("2").Range("a2:d" & a).Clear e = Application.CountIf(Sheets("1").Range("2:2"), "строка") If e > 0 Then h = 1 For g = 1 To e i = Application.Match("строка", Sheets("1").Range(Sheets("1").Cells(2, h), Sheets("1").Cells(2, 16384)), 0) h = h + i j = Sheets("1").Cells(Rows.Count, h - 1).End(xlUp).Row k = Sheets("2").Cells(Rows.Count, "a").End(xlUp).Row + 1 Sheets("1").Range(Sheets("1").Cells(3, h - 1), Sheets("1").Cells(j, h)).Copy Sheets("2").Range("a" & k).PasteSpecial Paste:=xlPasteValues Next l = Sheets("2").Cells(Rows.Count, "a").End(xlUp).Row Sheets("2").Range("a2:b" & l + 5).Sort key1:=Sheets("2").Range("a2:a" & l + 5), _ order1:=xlAscending, Header:=xlNo Sheets("2").Range("a2:b" & l + 5).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End If Application.CutCopyMode = False m = Sheets("2").Cells(Rows.Count, "a").End(xlUp).Row If m > 1 Then Sheets("2").Range("c2:c" & m).FormulaR1C1 = _ "=INDEX('1'!R1:R1048576,MATCH(RC[-2],'1'!C3,),MATCH(RC[-1],INDEX('1'!R1:R1048576,MATCH(RC[-2],'1'!C3,),1):INDEX('1'!R1:R1048576,MATCH(RC[-2],'1'!C3,),'1С'!R2C12),)+1)"
Доброго времени суток, глубокоуважаемые форумчане!
Подскажите пожалуйста, какие строки кода нужно добавить в макрос по удалению свыше 12 символов (от 13 и далее) во время поиска значений с листа "1", при вставке этих найденных значений в столбец "C" листа "2" c помощью INDEX. Предпочту готовое решение.
Sub 888() Application.ScreenUpdating = False a = Sheets("2").Cells(Rows.Count, "a").End(xlUp).Row If a > 1 Then Sheets("2").Range("a2:d" & a).Clear e = Application.CountIf(Sheets("1").Range("2:2"), "строка") If e > 0 Then h = 1 For g = 1 To e i = Application.Match("строка", Sheets("1").Range(Sheets("1").Cells(2, h), Sheets("1").Cells(2, 16384)), 0) h = h + i j = Sheets("1").Cells(Rows.Count, h - 1).End(xlUp).Row k = Sheets("2").Cells(Rows.Count, "a").End(xlUp).Row + 1 Sheets("1").Range(Sheets("1").Cells(3, h - 1), Sheets("1").Cells(j, h)).Copy Sheets("2").Range("a" & k).PasteSpecial Paste:=xlPasteValues Next l = Sheets("2").Cells(Rows.Count, "a").End(xlUp).Row Sheets("2").Range("a2:b" & l + 5).Sort key1:=Sheets("2").Range("a2:a" & l + 5), _ order1:=xlAscending, Header:=xlNo Sheets("2").Range("a2:b" & l + 5).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End If Application.CutCopyMode = False m = Sheets("2").Cells(Rows.Count, "a").End(xlUp).Row If m > 1 Then Sheets("2").Range("c2:c" & m).FormulaR1C1 = _ "=INDEX('1'!R1:R1048576,MATCH(RC[-2],'1'!C3,),MATCH(RC[-1],INDEX('1'!R1:R1048576,MATCH(RC[-2],'1'!C3,),1):INDEX('1'!R1:R1048576,MATCH(RC[-2],'1'!C3,),'1С'!R2C12),)+1)"
Да просто вложите этот индекс() в левсимв() - берите 12 с начала строки. И может быть ещё на всякий случай сперва нужно отрезать возможный лишний начальный пробел.
Да просто вложите этот индекс() в левсимв() - берите 12 с начала строки. И может быть ещё на всякий случай сперва нужно отрезать возможный лишний начальный пробел.Hugo
Мне сложно - нет ни файла, ни кода в нём. Выполните код, включите рекордер, добавьте в первую формулу левсимв(), выключите запись Возьмите строку с формулой из этого макроса.
Мне сложно - нет ни файла, ни кода в нём. Выполните код, включите рекордер, добавьте в первую формулу левсимв(), выключите запись Возьмите строку с формулой из этого макроса.Hugo