2017-05-24 24 views
0

VBAを使用して達成したいのは、ある範囲内の列の数をカウントすることですが、指定されたセル値に遭遇する。さらに、私は後で計算に使用する変数に値を代入したいと思います。VBA:指定された値に達するまでの範囲内の列数をカウント

ピボットテーブルの幅は、選択する月数によって異なります。私の説明が不明な場合は画像を見てください:)(私の評判は不十分ですが、下にリンクがありますので画像を埋め込むことはできません)最終的に月の数を数え、変数Iは番の番号と呼ばれます。私はVBAにあまり経験がありません。これを行うより良い方法があれば教えてください。

これを行う方法の1つは、(3,3)から始まる範囲を定義することであると考えました。この開始点は固定されていて、(3,20)で終了します。最大で12ヶ月間、そして、 "Grand Total"というテキストが含まれるセルが出現するまで、空でないセルの数を数えます。ちなみに、 "Grand Total"列の横にあるセルにはデータがあり、値17/01、17/02、...もそこにあります。そのため、一度停止する方が良いと思った理由ですいくつかのcountifアプローチを使用する代わりに、 "Grand Total"に達します。これはまったく可能ですか?どんな助けでも大歓迎です!

https://i.stack.imgur.com/pzBpb.png

+0

これまでに試したコードを質問に追加してください。 –

+0

申し訳ありませんが、この特定の問題のコードは書かれていません。本当に対処方法がわからないからです。いずれかのアイデアを得るのに十分な類似の質問を見つけることができませんでした – endgame

答えて

0

ものは、VBAで可能です。これは、「総計」に達するまで、列Bで右に向かって行2のセルをカウントします。あなたが望むように月の数を返します。

Function CountMonth() As Integer 
Dim LastCol As Long 
Dim sht As Worksheet 
Dim Counter As Integer 

Set sht = Worksheets("Sheet1") 
LastCol = sht.Cells(3, Columns.Count).End(xlToLeft).Column 

For i = 2 To LastCol 
    If sht.Cells(3, i).Value <> "Grand Total" Then 
     Counter = Counter + 1 
    Else 
     Exit For 
    End If 
Next i 
CountMonth = Counter 
End Function 
+0

ありがとうございました!それはうまくいく – endgame

関連する問題