需要vba excel中Sql查询的帮助吗
我在excel的父表中有数据,我需要填充子表需要vba excel中Sql查询的帮助吗,sql,vba,excel,Sql,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
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
这样行吗?对于John,记录集是否会将D级值返回为0;对于Jay,记录集是否会将A、C、D级值返回为0?请给我一些建议,谢谢 使用透视表的示例。我认为SQL在这方面做得太过分了,因为Excel内置了功能
使用透视表的示例。我认为SQL在这方面做得太过分了,因为Excel内置了功能
使用透视表的示例。我认为SQL在这方面做得太过分了,因为Excel内置了功能
使用透视表的示例。我认为SQL在这方面做得太过分了,因为Excel内置了功能
考虑使用关系数据库而不是平面文件电子表格来查询可能超过100万个条目。除非使用VBA或外接程序调用,否则Excel自然没有SQL查询功能 如果使用PC,使用MS Access(Excel的Office同级),您可以轻松运行交叉表查询,该查询基本上聚合并旋转您的记录集:
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;
女性
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;
如上所示,只需将父工作表导入名为ParentSheet的数据库表中。您甚至可以将特定于性别的查询以csv、txt、xml或xlsx的形式导出到子工作表中。考虑使用关系数据库而不是平面文件电子表格来查询可能超过100万个条目。除非使用VBA或外接程序调用,否则Excel自然没有SQL查询功能 如果使用PC,使用MS Access(Excel的Office同级),您可以轻松运行交叉表查询,该查询基本上聚合并旋转您的记录集:
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;
女性
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;
如上所示,只需将父工作表导入名为ParentSheet的数据库表中。您甚至可以将特定于性别的查询以csv、txt、xml或xlsx的形式导出到子工作表中。考虑使用关系数据库而不是平面文件电子表格来查询可能超过100万个条目。除非使用VBA或外接程序调用,否则Excel自然没有SQL查询功能 如果使用PC,使用MS Access(Excel的Office同级),您可以轻松运行交叉表查询,该查询基本上聚合并旋转您的记录集:
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;
女性
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;
如上所示,只需将父工作表导入名为ParentSheet的数据库表中。您甚至可以将特定于性别的查询以csv、txt、xml或xlsx的形式导出到子工作表中。考虑使用关系数据库而不是平面文件电子表格来查询可能超过100万个条目。除非使用VBA或外接程序调用,否则Excel自然没有SQL查询功能 如果使用PC,使用MS Access(Excel的Office同级),您可以轻松运行交叉表查询,该查询基本上聚合并旋转您的记录集:
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;
女性
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;
如上所示,只需将父工作表导入名为ParentSheet的数据库表中。您甚至可以将特定于性别的查询以csv、txt、xml或xlsx的形式导出到子工作表中。为什么必须在SQL中完成?为什么不使用透视表呢?我知道你说过这是“你想要的”,但如果结果匹配又有什么关系?@xQbert因为我每周都要做这件事,有近百万个条目,我不知道如何自动化透视表,但我知道一点SQL。透视会容易得多。。。插入透视表,选择数据范围,然后使透视表字段列表与下面的“我的字段列表”类似。如果需要单独的性别工作表,请为性别女性添加报告过滤器,并为男性重复步骤。但删除行标签上的性别。Excel Pivot功能非常强大@非常感谢你。我仍然需要编写透视表,所以我想我更喜欢SQL。谢谢。为什么必须用SQL来完成?为什么不使用透视表呢?我知道你说过这是“你想要的”,但如果结果匹配又有什么关系?@xQbert因为我每周都要做这件事,有近百万个条目,我不知道如何自动化透视表,但我知道一点SQL。透视会容易得多。。。插入透视表,选择数据范围,然后使透视表字段列表与下面的“我的字段列表”类似。如果需要单独的性别工作表,请为性别女性添加报告过滤器,并为男性重复步骤。但删除行标签上的性别。Excel Pivot功能非常强大@非常感谢你。我仍然需要编写透视表,所以我想我更喜欢SQL。谢谢。为什么必须用SQL来完成?为什么不使用透视表呢?我知道你说过这是“你想要的”,但如果结果匹配又有什么关系?@xQbert因为我每周都要做这件事,有近百万个条目,我不知道如何自动化透视表,但我知道一点SQL。透视会容易得多。。。插入透视表,选择数据范围,然后使透视表字段列表与下面的“我的字段列表”类似。如果需要单独的性别工作表,请为性别女性添加报告过滤器,并为男性重复步骤。但删除行标签上的性别。Excel Pivot功能非常强大@非常感谢你。我仍然需要编写透视表,所以我想我更喜欢SQL。比