Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

would like to creat a relatively easy macro in excell

Posted on 2013-12-31
Medium Priority
363 Views
i have 5 columns of numbers listed in excell

would like to create a macro that gets the count of numbers in the first column

the remaining columns, i would like to calculate the average of each column

tried to record a macro to do this many times and it didnt work. One of the problems it wouldnt work was because the number of column entries will vary from spreadsheet to spreadsheet. The macro I created kept the column count the same.

If this doesnt explain the problem well enough, i can send a file
0
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
1 Comment

LVL 9

Accepted Solution

dustock earned 2000 total points
ID: 39748594
With the description you gave I tried to come up with a solution.  It may not be the best way to do it, but it seemed to work for my testing.

You didn't say what you wanted to do with the count and the averages so I just set this to put that data on the last row of each line with bold text and a pink cell color with your values

Go to the Developer Tab and click Visual Basic, double click "ThisWorkbook" and past the following code.  Then try to run the "Calculate" macro and see if you get the desired results.

Also in the future, please add Microsoft Excel to the Topics portion so that the Excel Experts can assist.

``````Dim cAverage As Double

Sub Calculate()
'LastRow for column A
ALastRow = Sheets(1).Cells(Sheets(1).Rows.Count, "A").End(xlUp).Row

Dim rRng As Range
'If you have a header row change to A1 to A2
Set rRng = Range("A1:A" & ALastRow)

Sheets(1).Cells(ALastRow + 1, "A").Value = ALastRow
'Set font to bold
Sheets(1).Cells(ALastRow + 1, "A").Font.Bold = True
'Set cell color
Sheets(1).Cells(ALastRow + 1, "A").Interior.ColorIndex = 22

'For Columns B to E
For i = 2 To 5
'Last Row for column i
LastRow = Sheets(1).Cells(Sheets(1).Rows.Count, i).End(xlUp).Row
CellAverage (Sheets(1).Range(Cells(1, i), Cells(LastRow, i)))
Sheets(1).Cells(LastRow + 1, i).Value = cAverage
'Set font to bold
Sheets(1).Cells(LastRow + 1, i).Font.Bold = True
'Set cell color
Sheets(1).Cells(LastRow + 1, i).Interior.ColorIndex = 22
Next i
End Sub

Sub CellAverage(rng As Range)
cAverage = 0
cAverage = Application.WorksheetFunction.Average(rng)
End Sub
``````
0

Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will be converting StringData saved within a text file into a hash table. This can be further used in a PowerShell script for replacing settings that are dynamic in nature from environment to environment.
In this modest contribution, I want to share with the IT community (especially system administrators, IT Support Engineers and IT Help Desks) about Windows crashes/hangs and how to deal with these particular problems.
This Micro Tutorial will teach you how to reformat your flash drive. Sometimes your flash drive may have issues carrying files so this will completely restore it to manufacturing settings. Make sure to backup all files before reformatting. This w…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Suggested Courses
Course of the Month7 days, 6 hours left to enroll