Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要vba excel中Sql查询的帮助吗_Sql_Vba_Excel - Fatal编程技术网

需要vba excel中Sql查询的帮助吗

需要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

我在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

这样行吗?对于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。比