This should do it. You can change the values in the config section to make some adjustments if needed.
Sub organize()
Dim row_header As Integer, total_cols As Long, col_n As Long
Dim target_next_row As Long, target_next_col As Long
Dim row_n As Long, new_sheet As String, main As String
Dim counter As Long, db_col_start As Integer, last_row As Long
'CONFIG
'---------------------------
row_header = 1 'in what row is the header?
db_col_start = 1 'in what col number does the data start?
main = "Sheet1" 'sheet name with the data set
new_sheet = "New Sheet" 'name of the sheet to create
'---------------------------
target_next_row = 3
'create new sheet
Sheets.Add.Name = new_sheet
'tranfer "Type of Fruit" title to new sheet
Sheets(new_sheet).Cells(1, 1) = Sheets(main).Cells(row_header, db_col_start)
Sheets(new_sheet).Cells(1, 1).Font.Bold = True
'get the total number of columns & rows
total_cols = _
Sheets(main).Cells(row_header, Columns.count).End(xlToLeft).Column
last_row = _
Sheets(main).Cells(Rows.count, db_col_start).End(xlUp).Row
For counter = 1 To last_row - row_header
Sheets(new_sheet).Cells(counter * 3, 1) = _
Sheets(main).Cells(row_header + counter, db_col_start)
Next counter
For row_n = row_header + 1 To last_row
target_next_col = 2
For col_n = db_col_start + 1 To total_cols
If IsEmpty(Sheets(main).Cells(row_n, col_n)) = False Then
Sheets(new_sheet).Cells(target_next_row, target_next_col) = _
Sheets(main).Cells(row_header, col_n)
Sheets(new_sheet).Cells(target_next_row, target_next_col).Font.Bold = True
Sheets(new_sheet).Cells(target_next_row + 1, target_next_col) = _
Sheets(main).Cells(row_n, col_n)
target_next_col = target_next_col + 1
End If
Next col_n
target_next_row = target_next_row + 3
Next row_n
End Sub