ユーザーが「開始日」と「終了日」の日付を入力して、ユーザーが選択した日付範囲に対応するデータを検索できるユーザーフォームがあります。スプレッドシートでは、日付は列 A にあり、列 W までの各行の次の列には、その日付に対応する一連のデータがあります。これらの 2 つの日付を取得して見ることができるコードを開発しようとしています。列 A に入力した日付範囲に該当する日付を持つ行のみで、指定された範囲内の日付を持つ行内の各列の回答をカウントします。次に、同じワークブック内の別のワークシートで、各応答のカウントの特定のセルにカウント値を入れたいと思います。可能な応答列ごとに 6 つの応答が定義されています。
かなり複雑に聞こえるかもしれませんが、これが私の最善の要約です。私はオートフィルターなどを使用することにオープンですが、それは vba を使用して行う必要があり、オートフィルターを使用する場合は、サブの最後でオートフィルター前の画面に戻す必要があります。
編集:
OK、私はあまり明確ではなかったと思います。最初の質問に対して、なぜ W になるのかというと、この分析に必ずしも関連しない各行に関連付けられた他の項目がいくつかあるためです。関連するデータ応答を含む列は列 D から W です。各行に入力される日付は 1 つだけで、それは列 A にあります (列 B と C は無視/スキップできます)。各列 (この場合はアンケートの質問) には、入力可能な 6 つの定義済み回答があります。
したがって、たとえば、D3 は「強く同意する」、「やや同意する」、「やや同意しない」、「まったく同意しない」、「回答なし」、または「わからない/該当しない」と言うことができます。これは、各列に関連付けられたすべての質問に当てはまります。したがって、指定された 2 つの日付 (範囲の開始日と終了日) 内にある日付を含む行を取得し、その行を横切って D 列から W 列まで見て、6 の数を数えられるようにしたいと考えています。各列 (または「質問」) の可能な応答 (上記)。次に、各列内の考えられる各応答のカウント値を、別のワークシート (この場合は Sheet3) の特定のセルにコピーしたいと考えています。
はい、指定された日付範囲内にある列 A の応答をフィルター処理し、列の日付基準を満たす行の 16 列のそれぞれについて、考えられる応答ごとに countif を実行する必要があると言いたかったのです。 A. それは理にかなっていますか?
私はあらゆる種類の高度なフィルターまたはオートフィルターを使用できますが、ユーザーフォームで指定された 2 つの日付に基づいて列 A の日付を並べ替える他のアイデアがある場合は、16 の質問列に対応する行を見て、各質問に対する 6 つの可能な回答のそれぞれの数を計算し、その数を別のワークシート (シート 3) の指定されたセルに入力します。
オートフィルターを試行した後、各列の可能な応答ごとにcountifとしてコピーアンドペーストしようとしましたが、実際にはフィルター処理していませんでした。たとえ私がそれを機能させたとしても、これは最も効率的な方法ではないようです。私のコーディング試行の例として、1 つの列に対する 2 つの応答のコードを次に示します (完全なコードは、15 列に対して 6 つの可能な応答を説明するため、ここに含めるには長すぎるように思われます)。
Private Sub cbOkDateEnter_Click()
Dim ws As Worksheet
Set ws1 = ThisWorkbook01.Sheets("Sheet1")
With Range("A1:W" & lr)
.AutoFilter Field:=1, Criteria1:=">=" & tbEnterDate01, Operator:=xlAnd, Criteria2:="<=" & tbEnterDate02
Dim sum01a, sum01b as Variant
sum01a = Application.WorksheetFunction.CountIf(Sheets("Sheet1").Range("D2:D5000"), "Strongly disagree")
Worksheets("Sheet3").Range("J12").Value = sum01a
sum01b = Application.WorksheetFunction.CountIf(Sheets("Sheet1").Range("D2:D5000"), "Somewhat disagree")
Worksheets("Sheet3").Range("J13").Value = sum01b
End Sub
どんな助けでも大歓迎です!ありがとう!