[AccessD] Exporting Access to Excel - How to "SUM" a column with a variable number of rows?

Brad Marks BradM at blackforestltd.com
Mon Jul 25 15:51:59 CDT 2011


William and Lambert,

Thanks for the help, I appreciate it.

One of the things that I often struggle with is that there is often more than one way to accomplish a task.  Before I start to build something big, I like to understand the options and also understand the "Best" way to get something done.

Thanks Again,
Brad 


-----Original Message-----
From: accessd-bounces at databaseadvisors.com on behalf of Heenan, Lambert
Sent: Mon 7/25/2011 1:31 PM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Exporting Access to Excel - How to "SUM" a column with a	variable number of rows?
 
The way I do this is after exporting the results of a query to Excel I then run a Dcount() against the same query to discover how many rows were in the output data....

nRows = DCount("*", "Some_Query_Name")

Then I open the Excel file with Access (i.e. I set an Excell.Application and Excel.Worksheet object) so that I can then add the formulas that I need to the row under the last row of exported data.

Essentially you build the formula in a text variable like this...

strFormula = "=Sum(" & Excel_Column(nCol) & nRowOffest - nRowsToSum & ":" & Excel_Column(nCol) & nRowOffest - 1 & ")"

Where nRowOffest is the row number to start summing (or averaging or counting, whatever) and nRowsToSum is the number of row in the output.  The function Excel_Column is used to get the right alpha prefix in the cells address...

Function Excel_Column(nCol As Long) As String
' given a valid column number return the Alpha name for it
' else return an empty string
    If nCol > 256 Then ' Pre Excel 2007
        Excel_Column = ""
    Else
        If nCol <= 26 Then
            Excel_Column = Chr(Asc("A") + nCol - 1)
        Else
            Dim sSecond As String
            sSecond = Excel_Column(nCol Mod 26)
            Excel_Column = Excel_Column(nCol \ 26) & sSecond
        End If
    End If
End Function

Then, after building the text string with the formula just plug it into the relevant cell in the workbook.

After setting the Excel.Application object you then need a reference to the worksheet that needs to be update...

Set Ws = xlApp.Sheets(nSheet)
With Ws
	strCellAddress = Excel_Column(nCol) & nRowOffest
	strFormula = "=Sum(" & Excel_Column(nCol) & nRowOffest - nRowsToSum & ":" & Excel_Column(nCol) & nRowOffest - 1 & ")"
	.Cells(nRowOffest, nCol) = strFormula
End With


HTH

Lambert

-----Original Message-----
From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Brad Marks
Sent: Monday, July 25, 2011 1:54 PM
To: Access Developers discussion and problem solving
Subject: [AccessD] Exporting Access to Excel - How to "SUM" a column with a variable number of rows?

I am starting to do some experiments involving the creation of Excel files from Access.

Let's say that I have an Access Recordset that can contain anywhere from 100 to 1,000 records.

I have a little Access application that currently pushes this data into Excel.  This all works nicely.

What is the best way to "Sum" a column in Excel after the last record, when the number of records can vary?

Thanks,
Brad

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.





More information about the AccessD mailing list