Sub RAMM()'
'First Step
'Add WSC data files
Dim directory As String, filename As String, sheet As Worksheet, total As Integer
Dim ProjNo As String, Wrkbk As String, csPath As String, userinput As String
Application.ScreenUpdating = False
Application.ScreenUpdating = False
OldName = ThisWorkbook.FullName
ProjNo = InputBox(prompt:="Please enter the project number.", _
Title:="Enter Project Number", Default:="#######")
If ProjNo = "#######" Or ProjNo = vbNullString Then
MsgBox "You did not enter the Project Number, re-run Macro"
Exit Sub
Else
csPath = InputBox(prompt:="Enter your project folder where you would like to save this file.", _
Title:="Enter Project Folder", Default:="C:\")
If csPath = "C:\" Or csPath = vbNullString Then
MsgBox "You did not enter the project file folder location"
Exit Sub
Else
Wrkbk = ProjNo & "_MeanMonthly_RegionalAnalysis.xlsm"
ActiveWorkbook.SaveAs filename:=csPath & "\" & Wrkbk, FileFormat:=52
userinput = MsgBox("Would you like to add WSC data? (If no, you may add data manually)", vbYesNo, "Data type")
If userinput = vbNo Then
Worksheets.Add(After:=Worksheets(Worksheets.count)).Name = "User Input Data"
Range("A2").Select
ActiveCell = "ID"
Range("B2").Select
ActiveCell = "PARAM"
Range("C2").Select
ActiveCell = "Date"
Range("D2").Select
ActiveCell = "Flow"
Range("E2").Value = "SYM"
Exit Sub
Else
directory = InputBox(prompt:="Please enter the path directory to the folder that contains your monthly data.", _
Title:="Enter file path", Default:="C:\")
If directory = "C:\" Or directory = vbNullString Then
MsgBox "You did not enter a file path. Manually insert data, or re-run Macro."
Else
filename = Dir(directory & "\" & "*.csv")
Do While filename <> ""
Workbooks.Open (directory & "\" & filename)
total = Workbooks(Wrkbk).Worksheets.count
Workbooks(filename).ActiveSheet.Copy _
After:=Workbooks(Wrkbk).Sheets(total)
Workbooks(filename).Close
filename = Dir()
Loop
End If
End If
End If
End If
'Second Step
'Pivot tables
Dim ws As Worksheet, CondForm As Integer
CondForm = InputBox(prompt:="What is the minimum number of data acceptable for a specific month (default is 15 days)", Title:="Conditional Formatting settings", Default:="15")
For Each ws In ActiveWorkbook.Worksheets
' Exclude certain sheets
If ws.Name <> "MetaData" And ws.Name <> "Summary" And ws.Name <> "Macro Instructions" Then
With ws
'ActiveSheet
ws.Name = "Macro"
ws.Select
Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'add 0 data for each month to fill pivot table months from 1-12
Rows("2:13").Insert shift:=xlDown
Dim mo As Integer, ro As Integer
mo = 1
ro = 2
For ro = 2 To 13
Cells(ro, 1).Value = Range("A14")
Cells(ro, 3).Value = mo & "/1/2050"
Cells(ro, 4).Value = ""
mo = mo + 1
Next ro
'Create required data fields
Columns("D:F").Select
Selection.Insert shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D1").Select
ActiveCell.FormulaR1C1 = "Year"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Month"
Range("F1").Select
ActiveCell.FormulaR1C1 = "Value day"
Range("D2").Select
ActiveCell.FormulaR1C1 = "=YEAR(RC[-1])"
Range("E2").Select
ActiveCell.FormulaR1C1 = "=MONTH(RC[-2])"
Range("D2:E2").Select
Range("E2").Activate
Selection.NumberFormat = "General"
Range("F2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[1]<>"""",RC[1]*24*60*60,"""")"
Selection.NumberFormat = "General"
Range("A1").Select
ActiveCell.FormulaR1C1 = "=COUNTA(R2C1:R50000C1)"
Dim count As Integer
count = Range("A1").Value
Dim i As Integer
i = count + 1
Range("D2:F2").Select
Selection.AutoFill Destination:=Range("D2:F" & i)
Range("A1").Select
ActiveCell.Value = "ID"
'CREATE PIVOT TABLE DATA SET FROM WS
Dim WSD As Worksheet
Dim PT1Cache As PivotCache
Dim PT1 As PivotTable
Dim PRange As Range
Dim FinalRow As Long
Dim FinalCol As Long
Dim StrRange As String
Set WSD = Worksheets("Macro")
'Name active worksheet as "PivotTable"
'ActiveSheet.Name = "Macro"
Worksheets("Macro").Select
' Define input area and set up a Pivot Cache
FinalRow = WSD.Cells(Application.Rows.count, 1).End(xlUp).Row
FinalCol = WSD.Cells(1, Application.Columns.count).End(xlToLeft).Column
Set PRange = WSD.Cells(1, 1).Resize(FinalRow, FinalCol)
StrRange = PRange.Address
Set PT1Cache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=StrRange)
' CREATE COUNT PIVOT TABLE
Set PT1 = PT1Cache.CreatePivotTable(TableDestination:=WSD.Cells(7, FinalCol + 2), TableName:="PivotTable98")
' Turn off updating while building the table
PT1.ManualUpdate = True
' Set up the row fields
PT1.AddFields RowFields:="Year", ColumnFields:="Month"
' Set up the data fields
Dim field1 As String
field1 = Range("G1")
With PT1.PivotFields(field1)
.Orientation = xlDataField
.Function = xlCount
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable98").PivotFields("PARAM")
.Orientation = xlPageField
.Position = 1
End With
' Calc the pivot table
PT1.ManualUpdate = False
PT1.ManualUpdate = True
' END OF FIRST PIVOT TABLE CREATE
' Average PIVOT TABLE START
Dim PT2 As PivotTable
Dim PT2Cache As PivotCache
Set PT2Cache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=StrRange)
Set PT2 = PT2Cache.CreatePivotTable(TableDestination:=WSD.Cells(7, FinalCol + 18), TableName:="PivotTable99")
' Turn off updating while building the table
PT2.ManualUpdate = True
' Set up the row fields
PT2.AddFields RowFields:="Year", ColumnFields:="Month"
' Set up the data fields
With PT2.PivotFields(field1)
.Orientation = xlDataField
.Function = xlAverage
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable99").PivotFields("PARAM")
.Orientation = xlPageField
.Position = 1
End With
' Calc the pivot table
PT2.ManualUpdate = False
PT2.ManualUpdate = True
' END OF AVERAGE PIVOT TABLE CREATE
' SUM value day PIVOT TABLE START
Dim PT3 As PivotTable
Dim PT3Cache As PivotCache
Set PT3Cache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=StrRange)
Set PT3 = PT3Cache.CreatePivotTable(TableDestination:=WSD.Cells(7, FinalCol + 34), TableName:="PivotTable100")
' Turn off updating while building the table
PT3.ManualUpdate = True
' Set up the row fields
PT3.AddFields RowFields:="Year"
' Set up the data fields
With PT3.PivotFields("Value day")
.Orientation = xlDataField
.Function = xlSum
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable100").PivotFields("PARAM")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable100").PivotFields("Month")
.Orientation = xlPageField
.Position = 1
End With
' Calc the pivot table
PT3.ManualUpdate = False
PT3.ManualUpdate = True
' END OF SUM PIVOT TABLE CREATE
' SUM value PIVOT TABLE START
Dim PT4 As PivotTable
Dim PT4Cache As PivotCache
Set PT4Cache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=StrRange)
Set PT4 = PT4Cache.CreatePivotTable(TableDestination:=WSD.Cells(7, FinalCol + 37), TableName:="PivotTable101")
' Turn off updating while building the table
PT4.ManualUpdate = True
' Set up the row fields
PT4.AddFields RowFields:="Year"
' Set up the data fields
With PT4.PivotFields(field1)
.Orientation = xlDataField
.Function = xlSum
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable101").PivotFields("PARAM")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable101").PivotFields("Month")
.Orientation = xlPageField
.Position = 1
End With
' Calc the pivot table
PT4.ManualUpdate = False
PT4.ManualUpdate = True
' END OF SUM PIVOT TABLE CREATE
' Set up sheet for summary fill
Range("Z1").Select
ActiveCell.FormulaR1C1 = "=COUNTA(R[6]C:R[199]C)"
Range("Z2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+6"
Range("AA1").Select
ActiveCell.FormulaR1C1 = "=""AA""&R[1]C[-1]"
Range("AB1").Select
ActiveCell.FormulaR1C1 = "=""AB""&R[1]C[-2]"
Range("AC1").Select
ActiveCell.FormulaR1C1 = "=""AC""&R[1]C[-3]"
Range("AD1").Select
ActiveCell.FormulaR1C1 = "=""AD""&R[1]C[-4]"
Range("AE1").Select
ActiveCell.FormulaR1C1 = "=""AE""&R[1]C[-5]"
Range("AF1").Select
ActiveCell.FormulaR1C1 = "=""AF""&R[1]C[-6]"
Range("AG1").Select
ActiveCell.FormulaR1C1 = "=""AG""&R[1]C[-7]"
Range("AH1").Select
ActiveCell.FormulaR1C1 = "=""AH""&R[1]C[-8]"
Range("AI1").Select
ActiveCell.FormulaR1C1 = "=""AI""&R[1]C[-9]"
Range("AJ1").Select
ActiveCell.FormulaR1C1 = "=""AJ""&R[1]C[-10]"
Range("AK1").Select
ActiveCell.FormulaR1C1 = "=""AK""&R[1]C[-11]"
Range("AL1").Select
ActiveCell.FormulaR1C1 = "=""AL""&R[1]C[-12]"
Range("AA2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AB2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AC2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AD2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AE2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AF2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AG2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AH2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AI2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AJ2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AK2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AL2").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(R[-1]C)"
Range("AP1").Select
ActiveCell.FormulaR1C1 = "=COUNT(R[2]C:R[200]C)"
Range("AP2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C + 8"
Range("AQ1").Select
ActiveCell.FormulaR1C1 = "=""AQ9:AQ""&R[1]C[-1]"
Range("AQ2").Select
ActiveCell.FormulaR1C1 = "=Average(INDIRECT(R[-1]C))"
' Conditional Formatting
Dim YrRow As Integer, j As Integer, YrCol As Integer
j = Range("Z2").Value
For YrRow = 9 To j - 1
For YrCol = 11 To 23
Cells(YrRow, YrCol).Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:=CondForm
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions(1).ScopeType = xlSelectionScope
Next YrCol
Next YrRow
'Fill summary sheet
Sheets("Summary").Select
Range("B4").Select
ActiveCell.FormulaR1C1 = "=Macro!R3C1"
Range("E4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C27"
Range("F4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C28"
Range("G4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C29"
Range("H4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C30"
Range("I4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C31"
Range("J4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C32"
Range("K4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C33"
Range("L4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C34"
Range("M4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C35"
Range("N4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C36"
Range("O4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C37"
Range("P4").Select
ActiveCell.FormulaR1C1 = "=Macro!R2C38"
Range("Q4").Select
ActiveCell.Formula = "=Macro!AQ2/(Summary!D4*1000^2)*1000"
Range("A3").Offset(1).EntireRow.Insert
'Rename Macro to station ID
Worksheets("Macro").Select
ws.Name = [A2]
'lock cells
ActiveSheet.Unprotect
Selection.Locked = False
Range("A1:ZZ50000").Select
Selection.Locked = False
Range("Z1:AZ2").Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect Password:="Golder", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowUsingPivotTables:=True
End With
End If
Next ws
Application.ScreenUpdating = True
Application.ScreenUpdating = True
End Sub