[英]Need help in Sql query in vba-excel
我在excel的父表中有數據,我需要填充子表。
Parent Sheet P
Name Gender Grades Frequency
John Male A 3
John Male B 1
John Male C 2
Jay Male B 6
Sarah Female B 5
Sarah Female C 1
Maria Female A 4
Maria Female D 2
很明顯,所有學生都不會擁有所有類型的成績。 例如,瑪麗亞擁有兩個D級,這是其他學生所沒有的。
Child sheet (Male) M
Name Grade A Grade B Grade C Grade D
John 3 1 2 0
Jay 0 6 0 0
Child sheet (Female) F
Name Grade A Grade B Grade C Grade D
Sarah 0 5 1 0
Maria 4 0 0 2
這就是我想要的。 我已經用標題,唯一的名稱和性別制作了表格,所以只需要填寫成績頻率數據即可。 我想使用SQL來做到這一點。 我有兩件事要寫。
'For Male Sheet
rs.open "SELECT [P$].Frequency FROM [P$] WHERE Name like (SELECT [M$].NAME FROM [M$])
M.Cells(3,1).CopyFromRecordset rs
請問這能做嗎? 如果約翰或Grad A,記錄集是否會返回D級值為0,如果Jay,則記錄C返回D級值為0? 請指教。謝謝。
使用數據透視表的示例。 由於Excel具有內置功能,因此我認為SQL在這里過大。
考慮使用關系數據庫而不是平面文件電子表格來查詢可能超過一百萬的條目。 除非使用VBA或外接程序調用,否則Excel自然不具有SQL查詢功能。
如果使用PC,並且使用MS Access(Excel的同級產品),則可以輕松地運行交叉表查詢,該查詢實際上可以聚合和旋轉記錄集:
TRANSFORM Sum(ParentSheet.Frequency) AS SumOfFrequency
SELECT ParentSheet.[Name]
FROM ParentSheet
GROUP BY ParentSheet.[Name]
PIVOT 'Grade ' & ParentSheet.Grades;
並添加一個where子句以按性別划分:
男
TRANSFORM Sum(ParentSheet.Frequency) AS SumOfFrequency
SELECT ParentSheet.[Name]
FROM ParentSheet
WHERE ParentSheet.Gender = 'Male'
GROUP BY ParentSheet.[Name]
PIVOT 'Grade ' & ParentSheet.Grades;
女
TRANSFORM Sum(ParentSheet.Frequency) AS SumOfFrequency
SELECT ParentSheet.[Name]
FROM ParentSheet
WHERE ParentSheet.Gender = 'Female'
GROUP BY ParentSheet.[Name]
PIVOT 'Grade ' & ParentSheet.Grades;
如上所示,只需將您的Parent工作表導入到名為ParentSheet的數據庫表中。 您甚至可以將性別特定的查詢以csv,txt,xml的形式導出到您的子表中,或者導出回xlsx。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.