2016-10-14 11 views
0

次の問題を解決するCountResults.xlsm(マスターワークブック)にマクロを作成する必要があります。私はYESまたはNOのいずれかの別のワークシートにデータの列を持っています。私は、列の "はい"の量を数えるマクロを考え出す必要があります。列は、Test01.xlsxブックのSheet2にあります。その後、そのカウントを取って、私のCountResults.xlsmファイルの1つのセルに入れてください。これと同じように:Excel VBA:別のブックから列のデータをカウントし、マスタワークブックにカウンタを入力する

YESorNO

私は同じシート内の列のカウントを表示するコードを持っています。しかし、このコードは、私の写真にあるように、列に空白(空白)があるときはカウントされません。これがそのコードです:

Private Sub CommandButton1_Click() 

MsgBox Range("A1").End(xlDown).Row 
Range("A1").End(xlDown).Offset(1, 0).Select 

End Sub 

私は別のブックにアクセスし、各ワークブックとワークシートの値を定義することができます別のコードがあります。

Dim wbSource As Workbook 
Dim wbTarget As Workbook 
Dim shSource As Worksheet 
Dim shTarget As Worksheet 

Set wbSource = Workbooks.Open(Filename:="C:\Users\khanr1\Desktop\Test_Excel\Test03.xlsm", ReadOnly:=True) 
Set wbTarget = ThisWorkbook 
Set shSource = wbSource.Worksheets("Sheet2") 
Set shTarget = wbTarget.Worksheets("Sheet1") 

答えて

1

使用COUNTIFを。範囲が別のワークブックにあっても、合計を得られます。すなわち=COUNTIF([Book2.xlsx]Sheet2!$D$2:$D$9, "Yes")。数式としてCOUNTIFがシート内にある問題は、カウントを更新する場合は、別のブックを開く必要があることです。 VBAコードの下で更新が行われます。あたりOPの要件

Sub UpdateResults() 

    Dim oWBWithColumn As Workbook: Set oWBWithColumn = Application.Workbooks.Open("<your Test01.xlsx address here>") 
    Dim oWS As Worksheet: Set oWS = oWBWithColumn.Worksheets("Sheet2") 
    Dim intLastRow as Integer: intLastRow = oWS.Cells(Rows.Count, "B").End(xlUp).Row 

    ThisWorkbook.Worksheets("<name of the sheet in your CountResults.xlsm workbook>").Range("<cell address>").Value = Application.WorksheetFunction.CountIf(oWS.Range("B2:B" & intLastRow), "yes") 

    oWBWithColumn.Close False 

    Set oWS = Nothing 
    Set oWBWithColumn = Nothing 

End Sub 
+0

はちょうどあなたが予想コラムオープンで、ブックを持っている場合、 'COUNTIF'にのみ機能するであろうことに気づきとして追加された行数:あなたのCountResults.xlsmワークブック

EDITでボタンにサブを割り当てます。あなたのVBAオプションを与えるために私の答えを更新 – Zac

+0

完璧に動作します!あなたに十分なZacに感謝することはできません。もう一つ質問がありました。 B2からB列の終わりに行きたいと思ったら、どうなっていますか? (B2:B)? – Ridwan

+0

@リドワン - これがうまくいけば(私が信じたように)、チェックをクリックしてZacの答えを "受け入れる"ことを確認してください。これにより、同様の問題を抱える将来の人々がこれを解決策と見なすことが保証されます。さらに、それは適切なクレジットを与える – Hambone

関連する問題