2017-03-09 82 views
0

我正在開展一個項目工作,對excel vba非常陌生。我的老闆給了我一張工作表,裏面有一個包含多個學生證號碼的專欄,其餘的專欄是他們對一項調查的回答。調查是多項選擇,並選擇所有適用的。計算一個短語出現在列中的次數

我需要找出一種方法來找到多次選擇題中的一個問題被選中的次數。 因此,例如,如果有10名學生,並且有2個答案的問題,並且5個人選擇了是並且5選擇了否,我需要它最終告訴我50%選擇了答案是並且50%選擇了答案編號

對於非多項選擇題,例如選擇過去採用的所有AP類,我需要知道同樣的事情。由於這是一個問題,該列中的一些單元格是空白的。

我一直在努力尋找解決方案。到目前爲止,我試圖對某個列出現答案的次數進行countIF(我無法搜索整個工作表,因爲許多問題都有相同的答案選項)。我的這個大問題是,我不知道如何編寫countif的範圍,因爲我需要的範圍是我聲明的列號,但該行需要是包含數據的列中的最後一行。這個範圍每次都不一樣,因爲每次參加調查的學生數量都會發生變化,所以我需要將範圍設置爲我設置的列的第一行,如A1,然後是最後一行該欄。

如何做到這一點的任何幫助或資源將是偉大的,我一直在搜索整個互聯網和關於vba。

+0

如果你有問題清單,你必須首選答案,你可以建立不VBA的概述表在Excel中有問題(逐字從測驗)。你然後sumifs(允許多個標準,所以驗證問題是相同的作爲您的參考,然後是的答案是第二個標準)和countif除(基於問題)。範圍不需要使用行定義,這樣,因爲它們可以是列A或B的所有列等。 – Cyril

回答

0

我打算建議遠離Excel的VBA,並使用基本的Excel公式來推導出答案。你有什麼理由覺得在這裏需要優秀的VBA嗎?

無論如何,這裏是將您的範圍定義爲列+最後一行的標準方法。這個例子是列A

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

感謝您的幫助!我能弄清楚如何獲得最後一行,我不知道如何使用最後一行變量來寫入範圍。我和VBA一起去的主要原因是因爲我的老闆提出這個問題,因爲有超過100列和600行。如果你認爲創建一個新的工作表並使用常規的Excel函數會更容易,那麼試試吧。 – Cocoberry2526

+0

我明白了。除非有超過100個或600個單獨的問題,否則我仍然建議使用Cyril在我之上發佈的內容 - 使用sumifs或其他excel公式來獲得答案。一旦你擁有了正確的公式,就會有多少學生參與其中,這隻會改變你正在評估的範圍。 – dwirony

+0

我開始使用像所有人建議的常規excel功能,而且肯定比VBA工作得更好。感謝您的幫助! – Cocoberry2526