Solved

# Format Excel sheet with last row having sum and percentage formulas in the columns

Posted on 2010-11-11
519 Views
This is the second part of the orginial question titled:   Format Excel sheet with a row suming the columns

The solution provided did what I asked, sum the columns on the last row.  But I forgot that 4 columns required a different formula and format (percentages).  The percentage columns (F:I) use this formula accordingly: =IF(C8=0,0,C8/B8)

Need help updating the code to incorporate the percentage formula into the last row and also format it as a percentage (100.00%).

``````Sub PostProcessing()

Dim MainWorksheet As Worksheet

' Make sure your worksheet name matches!

Set MainWorksheet = ActiveWorkbook.Worksheets("Have")

Dim DataRange As Range

Dim lastRow As Long

Set DataRange = MainWorksheet.UsedRange

' Now that you have the data in DataRange you can process it.

mainworksheet.range("A1:J1").Font.Bold = True

mainworksheet.range("A1:J1").Interior.ColorIndex = 15

With MainWorksheet

.Rows(1).Insert

With .Rows(2)

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = True

.Orientation = 0

.IndentLevel = 0

.ShrinkToFit = False

.MergeCells = False

End With

With .Range("B1:J1")

.Merge

.HorizontalAlignment = xlCenter

.Font.Bold = True

.FormulaR1C1 = "Test Execution Sprint View"

.Font.Name = "Arial"

.Font.Size = 12

End With

.[a2] = "Cycles"

lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

.Cells(lastRow, 1) = "Release Grand Total"

.Cells(lastRow, 2).Resize(1, 9).FormulaR1C1 = "=sum(R3C:R[-1]C)"

With .Cells(lastRow, 1).Resize(1, 10).Interior

.Pattern = xlSolid

.ColorIndex = 37

End With

End With

End Sub
``````
Execution-20Status-20by-20Sprint.xls
0
Question by:j420exe1
• 5
• 2

LVL 8

Expert Comment

ID: 34112548
Sorry,

I'd like to help but am a bit confused.  I can't find your other questions for some reason (Haven't used EE in a while most likely).

Could you tell me:
" The percentage columns (F:I) use this formula accordingly: =IF(C8=0,0,C8/B8)"  What cell is that going in?

If you put that into the last row (assuming 8 in this case) of column F you want it to give you C/B?

0

LVL 8

Expert Comment

ID: 34112563
DOH just saw attachment, disregard please.
0

LVL 8

Expert Comment

ID: 34113272
I believe this will do what you want.

Regards,
Kelvin

``````Sub PostProcessing()
Dim MainWorksheet As Worksheet
' Make sure your worksheet name matches!
Set MainWorksheet = ActiveWorkbook.Worksheets("Have")
Dim DataRange As Range
Dim lastRow As Long
Set DataRange = MainWorksheet.UsedRange
' Now that you have the data in DataRange you can process it.

MainWorksheet.Range("A1:J1").Font.Bold = True
MainWorksheet.Range("A1:J1").Interior.ColorIndex = 15

With MainWorksheet
.Rows(1).Insert

With .Rows(2)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With

With .Range("B1:J1")
.Merge
.HorizontalAlignment = xlCenter
.Font.Bold = True
.FormulaR1C1 = "Test Execution Sprint View"
.Font.Name = "Arial"
.Font.Size = 12
End With

.[a2] = "Cycles"

lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

.Cells(lastRow, 1) = "Release Grand Total"
.Cells(lastRow, 2).Resize(1, 9).FormulaR1C1 = "=sum(R3C:R[-1]C)"

.Range(.Cells(3, 6), .Cells(lastRow - 1, 9)).FormulaR1C1 = "=IF(RC3=3, 0, RC3/RC2)"
.Range(.Cells(3, 6), .Cells(lastRow, 9)).Style = "Percent"

'.last

With .Cells(lastRow, 1).Resize(1, 10).Interior
.Pattern = xlSolid
.ColorIndex = 37
End With

Set DataRange = MainWorksheet.UsedRange
With DataRange.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End With

End Sub
``````
0

LVL 8

Expert Comment

ID: 34113337
Ugh, I'm really sorry for all of the posts.  I'm a bit rusty.

I made a mistake in the formulas.  Here's a corrected version.
-K
``````Sub PostProcessing()
Dim MainWorksheet As Worksheet
' Make sure your worksheet name matches!
Set MainWorksheet = ActiveWorkbook.Worksheets("Have")
Dim DataRange As Range
Dim lastRow As Long
Set DataRange = MainWorksheet.UsedRange
' Now that you have the data in DataRange you can process it.

MainWorksheet.Range("A1:J1").Font.Bold = True
MainWorksheet.Range("A1:J1").Interior.ColorIndex = 15

With MainWorksheet
.Rows(1).Insert

With .Rows(2)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With

With .Range("B1:J1")
.Merge
.HorizontalAlignment = xlCenter
.Font.Bold = True
.FormulaR1C1 = "Test Execution Sprint View"
.Font.Name = "Arial"
.Font.Size = 12
End With

.[a2] = "Cycles"

lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

.Cells(lastRow, 1) = "Release Grand Total"
.Cells(lastRow, 2).Resize(1, 9).FormulaR1C1 = "=sum(R3C:R[-1]C)"
'/ % executed
.Range(.Cells(3, 6), .Cells(lastRow - 1, 6)).FormulaR1C1 = "=IF(RC3=0, 0, RC3/RC2)"
'/ % pass of executed
.Range(.Cells(3, 7), .Cells(lastRow - 1, 7)).FormulaR1C1 = "=IF(RC4=0, 0, RC4/RC3)"

'/ % fail of executed
.Range(.Cells(3, 8), .Cells(lastRow - 1, 8)).FormulaR1C1 = "=IF(RC5=0, 0, RC5/RC3)"

'/ % pass of total
.Range(.Cells(3, 9), .Cells(lastRow - 1, 9)).FormulaR1C1 = "=IF(RC4=0, 0, RC4/RC2)"

.Range(.Cells(3, 6), .Cells(lastRow, 9)).Style = "Percent"

'.last

With .Cells(lastRow, 1).Resize(1, 10).Interior
.Pattern = xlSolid
.ColorIndex = 37
End With

Set DataRange = MainWorksheet.UsedRange
With DataRange.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End With

End Sub
``````
0

Author Comment

ID: 34114446
It's still putting the sum formula in the last row in each column.
0

LVL 8

Accepted Solution

Kelvin81 earned 500 total points
ID: 34114586
My appologies, I thought thats what you wanted.

I'm a bit slow.

Here it is with the functions in the last row as well.

Regards,
Kelvin
``````Sub PostProcessing()
Dim MainWorksheet As Worksheet
' Make sure your worksheet name matches!
Set MainWorksheet = ActiveWorkbook.Worksheets("Have")
Dim DataRange As Range
Dim lastRow As Long
Set DataRange = MainWorksheet.UsedRange
' Now that you have the data in DataRange you can process it.

MainWorksheet.Range("A1:J1").Font.Bold = True
MainWorksheet.Range("A1:J1").Interior.ColorIndex = 15

With MainWorksheet
.Rows(1).Insert

With .Rows(2)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With

With .Range("B1:J1")
.Merge
.HorizontalAlignment = xlCenter
.Font.Bold = True
.FormulaR1C1 = "Test Execution Sprint View"
.Font.Name = "Arial"
.Font.Size = 12
End With

.[a2] = "Cycles"

lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

.Cells(lastRow, 1) = "Release Grand Total"
.Cells(lastRow, 2).Resize(1, 9).FormulaR1C1 = "=sum(R3C:R[-1]C)"
'/ % executed
.Range(.Cells(3, 6), .Cells(lastRow, 6)).FormulaR1C1 = "=IF(RC3=0, 0, RC3/RC2)"
'/ % pass of executed
.Range(.Cells(3, 7), .Cells(lastRow, 7)).FormulaR1C1 = "=IF(RC4=0, 0, RC4/RC3)"

'/ % fail of executed
.Range(.Cells(3, 8), .Cells(lastRow, 8)).FormulaR1C1 = "=IF(RC5=0, 0, RC5/RC3)"

'/ % pass of total
.Range(.Cells(3, 9), .Cells(lastRow, 9)).FormulaR1C1 = "=IF(RC4=0, 0, RC4/RC2)"

.Range(.Cells(3, 6), .Cells(lastRow, 9)).Style = "Percent"

'.last

With .Cells(lastRow, 1).Resize(1, 10).Interior
.Pattern = xlSolid
.ColorIndex = 37
End With

Set DataRange = MainWorksheet.UsedRange
With DataRange.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With DataRange.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End With

End Sub
``````
0

Author Closing Comment

ID: 34115290
Perfect!  Thanks.
0

## Featured Post

### Suggested Solutions

This is pretty cool.  The purpose of this VB Script is to help you document where JAR (Java ARchive) files and specifically java class files are located so that you can address issues seen with a client or that you can speak intelligently with a devâ€¦
This article will guide you to convert a grid from a picture into Excel format using Microsoft OneNote and no other 3rd party application.