- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我被公式困住了。本质上,我想要做的是根据从另一张纸中提取的数据来计算特定值在一张纸中出现的次数。
例如我有三张。一张表包含作业列表和与客户关联的代码。第二张表包含客户列表和客户详细信息。第三张是我的结果表。
我想统计每家公司的“How Heards”。例如,在下面的表 1 中,Apple 有 3 个客户。如果我们使用客户端代码 ID 并转到表 2,我们可以看到总共有 2 个 Online 和 0 个 Facebook。此结果显示在表 3 上。结果表。
表 1 示例
表 2 示例
表 3 示例(我希望计算结果如下)
最佳答案
为了实际为这个问题提供合适的答案,这里有一些 VBA 代码,允许工作簿创建与其自身的 ADO 连接并使用 SELECT、DISTINCT、WHERE、INNER JOIN、GROUP BY 和 ORDER 生成报告BY 子句。
Sub Inner_Join()
Dim cnx As Object, rs As Object
Dim sWS1 As String, sWS2 As String, sWB As String, sCNX As String, sSQL As String
Dim ws1TBLaddr As String, ws2TBLaddr As String
'Collect some string literals that will be used to build SQL
ws1TBLaddr = Worksheets("Sheet1").Cells(1, 1).CurrentRegion.Address(0, 0)
sWS1 = Worksheets("Sheet1").Name
ws2TBLaddr = Worksheets("Sheet2").Cells(1, 1).CurrentRegion.Address(0, 0)
sWS2 = Worksheets("Sheet2").Name
sWB = ThisWorkbook.FullName
'Build the connection string
'The first is for 64-bit Office; the second is more universal
sCNX = "Provider=Microsoft.Jet.OLEDB.12.0;Data Source=" & sWB _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
sCNX = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sWB _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
'Debug.Print sCNX
'Create the necessary ADO objects
Set cnx = CreateObject("ADODB.Connection") 'late binding; for early binding add
Set rs = CreateObject("ADODB.Recordset") 'Microsoft AxtiveX Data Objects 6.1 library
'Open the connection to itself
cnx.Open sCNX
With Worksheets("Sheet3")
'Clear the reporting area
.Cells(1, 1).CurrentRegion.ClearContents
'get [Business Name] list from Sheet1
sSQL = "SELECT DISTINCT w1.[Business Name]"
sSQL = sSQL & " FROM [" & sWS1 & "$" & ws1TBLaddr & "] w1"
sSQL = sSQL & " ORDER BY w1.[Business Name]"
'Debug.Print sSQL
'Populate Sheet3!A:A
rs.Open sSQL, cnx
Do While Not rs.EOF
'Debug.Print rs.Fields("Business Name")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0) = rs.Fields("Business Name")
rs.MoveNext
Loop
rs.Close
'get [How Heard] list from Sheet2
sSQL = "SELECT DISTINCT w2.[How Heard]"
sSQL = sSQL & " FROM [" & sWS2 & "$" & ws2TBLaddr & "] w2"
sSQL = sSQL & " WHERE w2.[How Heard] NOT LIKE 'None'"
sSQL = sSQL & " ORDER BY w2.[How Heard]"
'Debug.Print sSQL
'Populate Sheet3!1:1
rs.Open sSQL, cnx
Do While Not rs.EOF
'Debug.Print rs.Fields("How Heard")
.Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 1) = rs.Fields("How Heard")
rs.MoveNext
Loop
rs.Close
'start by seeding zeroes for all
With .Cells(1, 1).CurrentRegion
With .Resize(.Rows.Count - 1, .Columns.Count - 1).Offset(1, 1)
.Cells = 0
End With
End With
'get the counts for the [Business Name]×[How Heard] combinations
sSQL = "SELECT COUNT(w1.[Business Name]), w1.[Business Name], w2.[How Heard]"
sSQL = sSQL & " FROM [" & sWS1 & "$" & ws1TBLaddr & "] w1"
sSQL = sSQL & " INNER JOIN [" & sWS2 & "$" & ws2TBLaddr & "] w2 ON w1.[Client Code] = w2.[Client Code]"
sSQL = sSQL & " WHERE w2.[How Heard] <> 'None'"
sSQL = sSQL & " GROUP BY w1.[Business Name], w2.[How Heard]"
'Debug.Print sSQL
'Populate Sheet3 data matrix area
rs.Open sSQL, cnx
With .Cells(1, 1).CurrentRegion
Do While Not rs.EOF
'Debug.Print rs.Fields(0) & ":" & rs.Fields(1) & ":" & rs.Fields(2)
.Cells(Application.Match(rs.Fields(1), .Columns(1), 0), _
Application.Match(rs.Fields(2), .Rows(1), 0)) = rs.Fields(0)
rs.MoveNext
Loop
End With
rs.Close
End With
Final_Cleanup:
Set rs = Nothing
cnx.Close: Set cnx = Nothing
End Sub
结果应类似于以下内容。
关于excel - COUNTIFS VLOOKUP 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33988757/
在过去的一年里,我对 Excel 已经相当熟练了,我已经为下一步做好了准备,开始使用 VBA。 我尝试实现以下目标: 我想创建一个可以运行多个 Vlookups 的工具来自不同的数据源,并将所有数据组
是否可以在 VLOOKUP 公式中插入 VLOOKUP 以搜索特定的 table_array? 这是我要使用的公式: =VLOOKUP($F492,CONCATENATE("'[Budget esti
我正在尝试 vlookup从一张纸到另一张纸的一些数据。 每当我尝试 Vlookup使用 VBA:结果是 Application.WorksheetFunction.vlookup代替Applicat
我正在寻找 vlookup 的替代方案,在感兴趣的上下文中提高性能。 上下文如下: 我有一个很大的 {key;data} 数据集(约 100'000 条记录) 我想对数据集执行大量 VLOOKUP 操
我有以下脚本,但收到 VLOOKUP 错误: Dim DataRange, LookupRange As Range Dim Data, Test As Variant Set DataRange =
我对 Pandas 和 Python 还很陌生,我根本不知道如何做一些在 Excel 中很容易完成的事情。我希望能从社区中得到一点帮助。 假设我有以下内容,这是一个与梦幻足球相关的 df,它具有三列
我有一个问题,http://goo.gl/i82eA这是我具有所需输出的示例数据。目前我有一个用户定义的函数,它手动使用许多 if 语句来完成这项工作,但如果它在列中找到某种颜色并返回与其对应的颜色图
我想创建一个超过 2 个工作表的 VLOOKUP,并查看三个查找值,其中一个值与中间的 - 连接起来。 基础数据太大,无法放入此处(30k 字符限制),因此文件如下: https://wetransf
我正在尝试将大型数据集及其处理从 Excel 转换到 Python/Pandas,但在尝试实现“IF(col A = x, VLOOKUP(col表 Y 中的 B),否则,VLOOKUP(表 Z 中的
我有两张纸。两张纸的第一列都有用户 ID,但两张纸之间只有一些 ID 重叠。我想将 userids 保留在第一张表中,但在第二张表中,第二列有一个我想要的数据点。对于第一张表中也存在于第二张表中的
当单元格值更改时,我正在尝试在 VBA 中执行 Vlookup,根据已更改的单元格查找值。 目前我有: Private Sub Worksheet_Change(ByVal Target As Ran
我正在同一个工作表上执行循环 vlookup,但出现运行时错误:1004:无法使用以下代码获取 WorksheetFunction 类的 Vlookup 属性: Sub Test()
我有一张表,其中包含农田和每个田地中包含的英亩数。这些领域是共同拥有的,并按百分比分配。 字段拆分表: 目前,我为每个字段创建一个新行,并为每个字段中包含的英亩数使用 sumif,然后使用另一个 vl
我在工作表 1 中为城市创建了一个多选下拉列表,与下拉列表关联的邮政编码在工作表 2 中。 这就是我的工作表 2 的外观。 1.) 允许用户从下拉列表中选择多个城市。用户选择城市后,我想在一个单元格中
我想从一张表中获取多行数据 sheet1进入另一张纸上的单个单元格sheet2基于查找。 例如,一张纸上有数据: sheet1 我想根据 id 查找数据并将所有相关行返回到一个单元格中,如下所示: s
我的问题是我正在尝试动态更改我的 vlookup 开始的位置。我有一个嵌套 If 和 vlookups 的基本工作解决方案。目前 If 语句检查 Vendor = A 等,然后执行 vlookup。如
我的单元格包含用逗号分隔的文本,例如: apples, bananas, mango 每个单元格中的项目数量各不相同,有的有一个,有的多达 10 个。 我希望遍历单元格中的每个项目,然后对它们执行 v
我目前正在为 excel 使用 VLOOKUP 函数,我想知道 VLOOKUP 是否真的比较单元格,还是只是直接使用它对面的单元格? 这是我的公式“=VLOOKUP(A2,Sheet3!A2:B181
Col A 有 ItemID Col B 有 Model_Num Col C 有一长串 Model_Num .在 Col D 中,我想查找 Model_Num Col C 并把 ItemID item
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我是一名优秀的程序员,十分优秀!