2016-10-29 16 views
0
'Calculating Sum of Max. values of Eth column from pivot table values 
    Dim lastRowE As Long 
    lastRowE = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row 
    'Excluding grandtotal 
    lastRowE = lastRowE - 1 
    Worksheets("pmrrcconnmax").Activate 
    Cells(1, 5).Value = WorksheetFunction.SumIfs(Range("E7:E" & lastRowE), _ 
             Range("E7:E" & lastRowE), ">0") 

'Calculating Sum of Max. values of Fth column from pivot table values 
    'Dim lastRowF As Long 
    lastRowF = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row 
    'Excluding grandtotal 
    lastRowF = lastRowF - 1 
    'Worksheets("pmrrcconnmax").Activate 
    Cells(1, 6).Value = WorksheetFunction.SumIfs(Range("F7:F" & lastRowF), _ 
              Range("F7:F" & lastRowF), ">0") 

'Calculating Sum of Max. values of Gth column from pivot table values 
    'Dim lastRowG As Long 
    lastRowG = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row 
    'Excluding grandtotal 
    lastRowG = lastRowG - 1 
    'Worksheets("pmrrcconnmax").Activate 
    Cells(1, 7).Value = WorksheetFunction.SumIfs(Range("G7:G" & lastRowG), _ 
             Range("G7:G" & lastRowG), ">0") 

など....第K列まで(私はVBAを初めて使っています)誰かがループや他の適切なループにそれらを入れる方法を見つけるのを助けることができますか?私が正しく理解している場合VBA FOR列をインクリメントするループ

は事前

答えて

1

にありがとう、そしてあなたは、VBAでforを使用して別のセルにそれぞれの時間を参照してください、この例を試してみたい:

Dim row As Integer 
Dim col As Integer 

For row = 1 To 10 
    For col = 1 To 10 
     Cells(row, col).Value = 1 
    Next 
Next 

それが細胞内での塗りつぶしCells 1.

の値を持つ10×10あなたは簡単にセルを選択するために、整数の変数を挿入することができます。

あなたも、この例のようにRangeとそれを組み合わせることができます。

Range(Cells(1, 1), Cells(5, 5)).Select 

あなたは、このような列全体を選択するにもCAL:

Columns(5).Select 
0

はこれを試してみてください。

Option Explicit 

Sub Add_Formulas() 

'Declaring the variable lColumn as long to store the last Column number 
Dim lColumn As Long 
'Declaring the variable iCntr as long to use in the For loop 
Dim iCntr As Long, iCell As Long 
Dim ColLetter As String 
Dim lastCol As Long, lastRow As Long 
Dim wks As Worksheet 

' Set wks so it is the activesheet 
Set wks = ThisWorkbook.ActiveSheet 

'lastCol = wks.Cells(1, wks.Columns.Count).End(xlToLeft).Column 
' Using column D as you are using column no. 4 in your code 
lastRow = wks.Range("D" & wks.Rows.Count).End(xlUp).Row 

'Excluding grandtotal 
lastRow = lastRow - 1 

'Assigning the last Column value to the variable lColumn 
'lColumn = lastCol 
lColumn = 11 

'Using for loop 
' 5-11 = E-K 
For iCntr = lColumn To 5 Step -1 

    ColLetter = GetColumnLetter(iCntr) 
    Cells(1, iCntr).Value = WorksheetFunction.SumIfs(Range(ColLetter & "7:" & ColLetter & lastRow), _ 
             Range(ColLetter & "7:" & ColLetter & lastRow), ">0") 
Next 

End Sub 

Function GetColumnLetter(colNum As Long) As String 
Dim vArr 
vArr = Split(Cells(1, colNum).Address(True, False), "$") 
GetColumnLetter = vArr(0) 
End Function 
+0

ありがとうございました..........私自身は最終的に以下のコードを試してみました。メソッド)を使用しています。これは幾分「最適化されています」と思っています....... –

+0

'最大のピボットテーブルは、iが整数 ワークシート( "pmpdcp")として 暗い値grandtotal fRow = fRow除くアクティブ fRow = ActiveSheet.Cells(Rows.Count、4).END(xlUp).Row 」 - I 1 =ワークシートで範囲 として5 12に薄暗いのRNG( "pmpdcp") セットRNG = .Range(.Cells(7、I)、.Cells(fRow、I)) 細胞(1、I).Valueの= 次でWorksheetFunction.AverageIfs(RNG、RNG、 "> 0") 終了私はあなたが、変数名とそのタイプ( '薄暗い)を宣言するために忘れてはならない –

+0

。また、rngにデータがあることがわかっていれば、これは失敗します。いくつかのエラー処理を行うには、 'If Application.WorksheetFunction.Count(rng)> 0 Then' < - 改行、ここであなたのワークシート関数 - > End If – Niclas

関連する問題