2016-07-12 1 views
0

enter image description here独自のテキスト値をカウントし、私は私が作っていたダッシュボードのための参照ファイルを持っているVBA

で動的なダッシュボードを作成します。参照ファイルの列内の一意の組織名を数え、その数値を別のダッシュボードの列見出しの数にしたいと考えています。私はマクロレコーダーを使ってそれをユニークにしましたが、refファイル内の一意のorg名の数に基づいて、ダッシュボードの動的な列数をどのように変換するかはわかりません。参照ファイルがどのように見えるかの画像添付ファイルの例を次に示します。したがって、5つの一意の名前があると判断した場合は、別のダッシュボードに各列のヘッダーとして5つの列を作成させたいと思います。

Sub Macro1() 


'  Macro1 Macro 

Columns("F:F").Select 
Range("F1:F10000000000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Columns _ 
    ("O:O"), Unique:=True 

ActiveCell.FormulaR1C1 = "=ROWS(R[-11]C:R[-2]C)" 

End Sub 

答えて

1

ここでは、ユニークな結果を配列に読み込むことでそれを行う方法があります。これは、列ヘッダーがA1に入ることを前提としています。

Sub Macro1() 

Dim wsRef As Worksheet 
Dim wsDB As Worksheet 

Set wsRef = Worksheets("reference") 
Set wsDB = Worksheets("Dashboard") 

With wsRef 
    .Range("C1:C9").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("F1"), Unique:=True 

    Dim arrValues As Variant 
    arrValues = .Range("F2", .Range("F" & .Rows.Count).End(xlUp)) 

End With 

With wsDB 
    .Range(.Range("A1"), .Cells(1, UBound(arrValues))).Value = Application.WorksheetFunction.Transpose(arrValues) 
End With 

End Sub 
+0

列ヘッダーは行Fで開始し、1行おきにループします。A1ですべての行の代わりにそれを行う方法はありますか? – beks123

+0

'A'を' F'に変更し、セル参照の行番号に対してステップ2にカウンタを追加します。ステップ2の –

+0

forループを追加しますか? – beks123

0

あなたの列ヘッダーを作るために、辞書の項目をループ、その後、独自の値を取得するにはDictionary objectを使用してください。例:

myCol = 1 
For Each item in oDic.items 
    'Presuming you want your headers to start at A1 
    Cells(1, myCol).Value = item 
    myCol = myCol + 1 
Next 
関連する問題