2017-03-09 11 views
0

私は仕事中のプロジェクトに取り組んでおり、Excel vbaにはあまりよく慣れていません。私の上司は、私に複数の学生ID番号を含む列のワークシートを与えました。残りの列はアンケートに対する回答です。調査は複数選択であり、適用されるすべてを選択した。フレーズが列に表示される回数をカウントする

複数の選択肢の質問から1つの質問が選択された回数を見つける方法を理解する必要があります。 たとえば、10人の学生がいて、2つの回答があり、5人が「はい」を選択し、5人が「いいえ」を選択した場合、最終的に50%が回答を選択し、50%が答えを選択しました。

過去に受けたすべてのAPクラスを選択するなど多目的でない質問については、私は同じことを知る必要があります。これは質問であるため、その列のセルの一部は空白です。

私は解決策を見つけようと努力してきました。これまでのところ、答えの1つが特定の列に表示された回数でcountIFを実行しようとしました(多くの質問に同じ回答オプションがあるため、ワークシート全体を検索できません)。私の大きな問題は、範囲を数値で宣言する必要があるためcountifの範囲を記述する方法がわからないが、行はデータの列の最後の行にする必要があるということです。調査の対象となる学生の数は毎回変わるので、毎回範囲が同じではないので、範囲をA1のように設定した列の最初の行にする必要があります。その列。

これを行う方法に関するヘルプやリソースは素晴らしいと思いますが、私はインターネット上で検索し、vbaについて読んでいます。

+0

のためである、とあなたはVBAなしで、あなたができるセットアップ(クイズから逐語的に)疑問を持っているExcelの概要シート好適答えを持っています。次に、sumifs(複数の基準を許可するので、質問があなたの参照と同じであることを確認してから、答えは2番目の基準です)、countif(質問に基づいて)で割ります。範囲は列を使用して定義する必要はありません。このように、列Aまたは列Bのすべてである可能性があります。 – Cyril

答えて

0

私は、VBAをExcelから離れ、基本的なExcel式を使用してこれらの回答を導くことをおすすめします。ここでVBAの必要性を感じる理由はありますか?

ここでは、範囲を列+最後の行として定義する標準的な方法を示します。ご質問のリストを持っている場合は、この例では、列

Dim LastRow As Long 
LastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 
+0

ありがとうございます!私は最終行を取得する方法を理解することができた、私はどのように範囲を書き込むために最後の行変数を使用するか分からない。そして私がVBAに行った主な理由は、私の上司がそれを示唆し、100列以上600行あるためです。新しいワークシートを作成し、通常のExcel機能を使用する方が簡単な場合は、それを試してみてください。 – Cocoberry2526

+0

私は参照してください。 100個以上600個の質問がない限り、私はまだシリルが私の上に投稿したものと一緒に行くことをお勧めします。正しいフォーミュラを取得したら、どれだけ多くの学生が関わっているかは関係ありません。ちょっとした評価をしている範囲を変更するだけです。 – dwirony

+0

私はすべてあなたが提案したような通常のExcel機能を使い始めました。それは間違いなくVBAより良く機能しています。 yallsヘルプありがとう! – Cocoberry2526

関連する問題