Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# Create calculated column on multiple worksheets

Posted on 2011-03-21
Medium Priority
242 Views
Last Modified: 2012-05-11
I need to add a calculated column to the right of the last column in several populated worksheets (in this case it is sheets 1 thru 5 from the same workbook).
I would like to create a column named Month_Year based on this formula  DATE(H2|I2|1)
That creates the same number of rows as in the column to the immediate left of the calculated column.  Worksheets 1-5 contain different numbers of columns and rows of data.
0
Question by:Ed_CLP
[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
• Learn & ask questions
• 3
• 2
6 Comments

LVL 8

Expert Comment

ID: 35181524
This should work.
``````Sub FindLastColumn()
'Finds last used column, copies and selects the next
Dim LastColumn As Integer
'Find last column with text
If WorksheetFunction.CountA(Cells) > 0 Then
'Search for any entry, by searching backwards by Columns.
LastColumn = Cells.Find(What:="*", After:=[A1], _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End If

'se;ect first row in last column
cells(1,lastcolumn).select

-- do other stuff ---

End Sub
``````
0

LVL 18

Expert Comment

ID: 35181715
Hi,

may be...

Kris
``````Sub kTest()
Dim i As Long, r   As Long, c As Long, MySheets

MySheets = Array("Sheet1", "Sheet2", "Sheet3") '<<=== add more sheets

For i = 0 To UBound(MySheets)
With Worksheets(CStr(MySheets(i)))
r = .Range("h" & .Rows.Count).End(xlUp).Row
c = .UsedRange.Find("*", .[a1], , , , 2).Column
.Cells(2, c + 1).Resize(r - 1).Formula = "=date(h2,i2,1)"
End With
Next

End Sub
``````
0

LVL 18

Expert Comment

ID: 35181752
Hi,

replace

c = .UsedRange.Find("*", .[a1], , , , 2).Column

with

c = .UsedRange.Find("*", .[a1], , , 2, 2).Column

Kris
0

Author Comment

ID: 35182019
@krishnakrkc - that is perfect!  Can the column title(Month_year) be set as part of the script?
0

LVL 18

Accepted Solution

krishnakrkc earned 2000 total points
ID: 35182092
Hi,

Try

Kris
``````Sub kTest()
Dim i As Long, r   As Long, c As Long, MySheets

MySheets = Array("Sheet1", "Sheet2", "Sheet3") '<<=== add more sheets

For i = 0 To UBound(MySheets)
With Worksheets(CStr(MySheets(i)))
r = .Range("h" & .Rows.Count).End(xlUp).Row
c = .UsedRange.Find("*", .[a1], , , 2, 2).Column
.Cells(1, c + 1).Value = "Month_Year"
.Cells(2, c + 1).Resize(r - 1).Formula = "=date(h2,i2,1)"
End With
Next

End Sub
``````
0

Author Closing Comment

ID: 35182206
Completely answered my question.
0

## Featured Post

Question has a verified solution.

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

This tutorial explains how to create a series of drop-down lists that are dependent upon prior selections to guide (“force”) the user to make the correct selection and reduce data errors within Microsoft Excel. Excel 2010 was used for this tutorial;…
Some code to ensure data integrity when using macros within Excel. Also included code that helps secure your data within an Excel workbook.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…
###### Suggested Courses
Course of the Month10 days, 18 hours left to enroll

#### 618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.