Forum Discussion
TeivaC
Nov 20, 2023Copper Contributor
VBA for transposing some data to a new sheet
Hi everyone, I'm a total beginner in VBA and am trying to transpose some data from one sheet to another. I have different items in column B, with corresponding quantities and sizes in column O ...
- Nov 21, 2023
A variant:
Sub DuplicateProductsForSizes() Dim SourceSheet As Worksheet Dim TargetSheet As Worksheet Dim SourceRange As Range Dim TargetRange As Range Dim SourceRow As Range Dim ProductRange As Range Dim SizeColumn As Long Dim Size As Variant Application.ScreenUpdating = False Set SourceSheet = ThisWorkbook.Sheets("BL") On Error Resume Next Set TargetSheet = ThisWorkbook.Worksheets("Receiving BL") On Error GoTo 0 If TargetSheet Is Nothing Then Set TargetSheet = ThisWorkbook.Sheets.Add TargetSheet.Name = "Receiving BL" Else TargetSheet.UsedRange.Clear End If Set TargetRange = TargetSheet.Range("A1") SourceSheet.Range("A7:F7").Copy TargetRange.Resize(1, 6) TargetSheet.Range("G1:H1").Value = Array("Size", "Qty") Set TargetRange = TargetSheet.Range("A2") Set SourceRange = SourceSheet.Range("A8") Do While SourceRange.Value <> 0 Set ProductRange = SourceRange.Resize(1, 6) For SizeColumn = 15 To 21 ' O to U Size = SourceRange.Offset(0, SizeColumn - 1) If Size <> 0 Then ProductRange.Copy TargetRange.Resize(1, 6) TargetRange.Offset(0, 6).Value = SourceSheet.Cells(7, SizeColumn).Value TargetRange.Offset(0, 7).Value = Size Set TargetRange = TargetRange.Offset(1, 0) End If Next SizeColumn Set SourceRange = SourceRange.Offset(1, 0) Loop TargetSheet.Range(TargetSheet.Range("F1"), TargetRange.Offset(-1, 5)).Copy TargetSheet.Range(TargetSheet.Range("G1"), TargetRange.Offset(-1, 7)).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False Application.ScreenUpdating = True End Sub
HansVogelaar
Nov 21, 2023MVP
Could you attach a small sample workbook demonstrating the problem (without sensitive data), or if that is not possible, make it available through OneDrive, Google Drive, Dropbox or similar? Alternatively, you can attach it to a private message to me. Thanks in advance.