
Последние записи
- Прозрачность тайлсета в TPNGImage
- Как сделать VBA макрос в excel
- Поиск по столбцу 1-ого не нулевого значения (формулой в Microsoft Office Excel)
- Простановка единиц в ячейки под объектами (Microsoft Office Excel)
- Расчет затраченного времени между определенным рабочим временем (формулой в Microsoft Office Excel)
- Мигающий экран на Assembler
- VBA-макрос по копированию 10 строчек в выбранном диапазоне в Microsoft Office Excel
- Копирование только нужного диапазона в Microsoft Office Excel
- Перенос диапазона стоки в Microsoft Office Excel на другой лист по условию
- Мелодия в Pascal.ABC.Net с помощью System.Console.Beep — задержка воспроизведения звука

24th
Янв
Копирование только нужного диапазона в Microsoft Office Excel
Posted by obzor under VBA
На листе «Лист1» находиться сводная таблица с наименованием товара. Необходимо скопировать каждый товар на отдельный соответствующий лист. Проблема заключатся в том, что строк в каждом товаре будет всегда разное. (например яблок может быть 50 строк, груш 100 и т.д.)
Код:
Function WorksheetExists(shtName As String, Optional wb As Workbook) As Boolean
Dim sht As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(shtName)
On Error GoTo 0
WorksheetExists = Not sht Is Nothing
End Function
Sub GoBitch()
Dim i As Integer
Dim r As Integer
Dim sh As Worksheet
Set sh = Nothing
For i = 3 To 18
If Cells(i, "A") = vbNullString Then Exit For
If Cells(i, "A").MergeCells Then
if not WorksheetExists(cells(i,"A")) then
Set sh = Sheets.Add(After:=Sheets(Sheets.Count))
sh.Name = Cells(i, "A")
else
set sh = sheets(cells(i,"A").value)
end if
r = sh.cells(sh.rows.count,"A").end(xlup).row + 1
Else
If Not sh Is Nothing Then
sh.Cells(r, "A") = Cells(i, "A")
sh.Cells(r, "B") = Cells(i, "B")
sh.Cells(r, "C") = Cells(i, "C")
r = r + 1
End If
End If
Next i
End Sub