2017-12-29 25 views
-3

VBAを使用してExcelでこの機能を自動化したいと考えています。 {以内:woorkbook}>オプション - -VBA Excel検索とカウント

  1. はD1(現在手動でCTRL + Fからデータを確認し、D1(NP taks-223)

  2. 検索ブックから値を取得>すべて探しますワークブック内のデータが登場した回数)

  3. カウント、 はH1

私はMakroまたはそうでなければ、この機能を行うことができるようになりますをセルに結果を書き込みますか? 私は最近Excelを使用していますが、まだ回答が見つかりませんでした。 ありがとうございました:)

+0

手動でマクロを記録してみてください。マクロを開始するためのコードが提供されます。コードの助けが必要な場合は、スタックオーバーフローに関する質問を作成するときです。 – braX

+0

このためにVBAが必要かどうかは不明です。これを式で実現できるはずです。開始点として、** CountIF' ** – Zac

+0

のようなものを見てみてください。良いアイディアbraX - ここにいくつかの詳細情報があります:[コードを生成するためのマクロの記録](https://msdn.microsoft.com/en- us/vba/word-vba/articles/recording-a-macro-to-generate-code)と[記録されたVisual Basicマクロの改訂](https://msdn.microsoft.com/en-us/vba/word-vba – ashleedawg

答えて

0

上記の手順でマクロを記録しても、「すべて検索」は何も生成されないため、コードを見ることはできません。ただし、コードを使用して、必要なものを与える数式を作成し、その数式を$ H $ 1に書き込むことができます。ここでは3枚のワークブックの例を示します。 Sheet1は検索値で、他の2枚は検索値がランダムに散在しています。あなたと仮定すると、あなたのような何かをするかもしれない数でセルD1を含めたくない:

Sub countValueInWorkbook() 
    Dim formulaString As String 

    '//If you put your formula in any cell of Row 1, you will have a circular reference. 
    '//Start your formula with the sheet the search value cell is on, and count rows 2 thru 500 (or something) 
    formulaString = "=SUM(COUNTIF(Sheet1!2:500, $D$1)," 

    For Each wksht In ThisWorkbook.Sheets 
     If wksht.Name <> "Sheet1" Then 
      formulaString = formulaString & "COUNTIF(" & wksht.Name & "!1:500, $D$1)," 
     End If 
    Next wksht 

    '//Trim trailing comma and add ending parenthesis 
    formulaString = Left(formulaString, Len(formulaString) - 1) 
    formulaString = formulaString & ")" 

    '//Write formula to desired cell 
    Sheets("Sheet1").Range("$H$1").Value = formulaString 
End Sub 

これに似たものを使用して、ワークブックのすべてのシートに検索値のすべてのインスタンスをカウントすることができるようになります。 SUMは、この後

1.追加を追加するように

formulaString = formulaString & ", 1)" 

formulaString = formulaString & ")" 

:あなたは、カウントで検索値のセルそのものを含めたい場合は、以下の行を変更コードが実行されると、私はセルH1の次の式で終了します。

=SUM(COUNTIF(Sheet1!2:500, $D$1),COUNTIF(Sheet2!1:500, $D$1),COUNTIF(Sheet3!1:500, $D$1)) 

これがうまくいけば!

静的な値ではなく検索セル自体を使用するように編集されているため、D1の内容を変更すると、H1の式が更新されて新しい値がカウントされます。

+0

あなたのソリューションを試していただきありがとうございます:D –

+0

あなたのソリューションは非常に良いですが、どのように動作するべきか説明しませんでした。値がd2の場合、結果はh2に書き込まれ、前にのみカウントされます。このようなhttps://imgur.com/a/HmXaM –