Есть нехитрый макрос. Отлично работает, если в файле 5000 строк.
При увеличении количество строк до 12000 ломается на простейшей операции вставки (специально проверяла пошагово). Ломается - это значит намертво вешает эксель и вба. перезагрузки и перезапуски эффекта не дают.
К чему бы это и как это побороть не переписывая макрос полностью?
Range("m2").Select
Do Until IsEmpty(ActiveCell(0, -3))
If ActiveCell(0, -3) <> "" Then ActiveCell.Formula = "=RC[-11]&RC[-10]&RC[-9]&RC[-8]&RC[-7]&RC[-6]&RC[-4]"
ActiveCell(2, 1).Select
Loop
Range(Cells.End(xlDown).Offset(0, 12), Cells(2, 13)).Copy
Range("m2").PasteSpecial xlPasteValues
er = ActiveSheet.UsedRange.Rows.Count
Range("N2").Select
Dim w As Integer
For w = 1 To er - 2
If ActiveCell(0, -4) <> "" Then ActiveCell.FormulaR1C1 = "=SUMIF(RC[-1]:R[" & er - 2 - w & "]C[-1],RC[-1],RC[-4]:R[" & er - 2 - w & "]C[-4])"
ActiveCell.Offset(1, 0).Select
Next w
Range(Cells.End(xlDown).Offset(0, 13), Cells(2, 14)).Copy
Range("N2").PasteSpecial xlPasteValues ВОТ ТУТ ЛОМАЕТСЯ
Stop
ActiveSheet.UsedRange.RemoveDuplicates Columns:=13, Header:=xlNo
Stop
Range(Cells.End(xlDown).Offset(0, 13), Cells(2, 14)).Copy
Range("J2").PasteSpecial xlPasteValues
Columns("M:N").Delete
При увеличении количество строк до 12000 ломается на простейшей операции вставки (специально проверяла пошагово). Ломается - это значит намертво вешает эксель и вба. перезагрузки и перезапуски эффекта не дают.
К чему бы это и как это побороть не переписывая макрос полностью?
Range("m2").Select
Do Until IsEmpty(ActiveCell(0, -3))
If ActiveCell(0, -3) <> "" Then ActiveCell.Formula = "=RC[-11]&RC[-10]&RC[-9]&RC[-8]&RC[-7]&RC[-6]&RC[-4]"
ActiveCell(2, 1).Select
Loop
Range(Cells.End(xlDown).Offset(0, 12), Cells(2, 13)).Copy
Range("m2").PasteSpecial xlPasteValues
er = ActiveSheet.UsedRange.Rows.Count
Range("N2").Select
Dim w As Integer
For w = 1 To er - 2
If ActiveCell(0, -4) <> "" Then ActiveCell.FormulaR1C1 = "=SUMIF(RC[-1]:R[" & er - 2 - w & "]C[-1],RC[-1],RC[-4]:R[" & er - 2 - w & "]C[-4])"
ActiveCell.Offset(1, 0).Select
Next w
Range(Cells.End(xlDown).Offset(0, 13), Cells(2, 14)).Copy
Range("N2").PasteSpecial xlPasteValues ВОТ ТУТ ЛОМАЕТСЯ
Stop
ActiveSheet.UsedRange.RemoveDuplicates Columns:=13, Header:=xlNo
Stop
Range(Cells.End(xlDown).Offset(0, 13), Cells(2, 14)).Copy
Range("J2").PasteSpecial xlPasteValues
Columns("M:N").Delete