上記の手順でマクロを記録しても、「すべて検索」は何も生成されないため、コードを見ることはできません。ただし、コードを使用して、必要なものを与える数式を作成し、その数式を$ 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の式が更新されて新しい値がカウントされます。
手動でマクロを記録してみてください。マクロを開始するためのコードが提供されます。コードの助けが必要な場合は、スタックオーバーフローに関する質問を作成するときです。 – braX
このためにVBAが必要かどうかは不明です。これを式で実現できるはずです。開始点として、** CountIF' ** – Zac
のようなものを見てみてください。良いアイディア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