ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 891|回复: 10

[求助] 求用自定义函数达到附件黄色公式相同的结果

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-17 18:43 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
求用自定义函数达到附件黄色公式相同的结果.rar (8.41 KB, 下载次数: 10) 求用自定义函数达到附件黄色公式相同的结果.

TA的精华主题

TA的得分主题

发表于 2023-3-17 19:58 | 显示全部楼层
                                                           

image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-17 20:15 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-18 18:13 | 显示全部楼层
卢嘉轩 发表于 2023-3-17 20:15
三个参数,条件区域,条件,返回区域。

合并单元格能写进数组?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-18 20:13 | 显示全部楼层
Function MyFunction(rng1 As Range)
arr1 = Application.WorksheetFunction.Row(rng1)
  MyFunction = Application.WorksheetFunction.Lookup(arr1, arr1 / rng1 <> "", rng1)
End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-18 20:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
为什么不支持这种写法?

TA的精华主题

TA的得分主题

发表于 2023-3-18 22:35 | 显示全部楼层
  1. Sub 测试()  ''答题专用套路--by:学习使我快乐
  2.     Dim i, j, k, m, n, arr, brr, crr, drr
  3.     Dim r As Range, rng As Range
  4.     Sheet1.Activate
  5.     Dim dic As Object, key As String, keys, items
  6.     Set dic = CreateObject("scripting.dictionary")
  7.     For i = 2 To 12
  8.         Set rng = Range("A" & i)
  9.         If rng.MergeArea.Count > 1 Then
  10.             For k = 1 To rng.MergeArea.Count
  11.                 Set r = rng.Range("B" & k)
  12.                 If r.MergeArea.Count > 1 Then
  13.                     For j = 1 To r.MergeArea.Count
  14.                         key = rng.Cells(1, 1) & r.Cells(1, 1)
  15.                         dic(key) = dic(key) + rng.Cells(k + j - 1, 3)
  16.                     Next
  17.                     k = k + r.MergeArea.Count - 1
  18.                 Else
  19.                     key = rng.Cells(1, 1) & r.Cells(1, 1)
  20.                     dic(key) = dic(key) + rng.Cells(k, 3)
  21.                 End If
  22.             Next
  23.             i = i + rng.MergeArea.Count - 1
  24.         End If
  25.     Next
  26.     arr = Range("E1").CurrentRegion
  27.     For i = 2 To UBound(arr)
  28.         key = arr(i, 1) & arr(i, 2)
  29.         arr(i, 4) = dic(key)
  30.     Next
  31.     Range("E1").Resize(UBound(arr), UBound(arr, 2)) = arr
  32. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-18 22:35 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-19 15:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-3-19 17:57 | 显示全部楼层
G2 单元格公式,下拉

  1. =mergeSum($A$2:$A$20,$B$2:$B$20,$C$2:$C$20,E2,F2)
复制代码


  1. Function mergeSum(A As Range, B As Range, C As Range, E As Variant, F As Variant) As Double
  2. Dim i As Long
  3. Dim vA, vB
  4. Dim sum_product As Double
  5. For i = 1 To C.Cells.Count
  6.     Debug.Print "i: ", i, A.Cells(i), B.Cells(i), C.Cells(i)
  7.     If A.Cells(i).Cells(1, 1).Value <> "" Then vA = A.Cells(i).Cells(1, 1).Value
  8.     If B.Cells(i).Cells(1, 1).Value <> "" Then vB = B.Cells(i).Cells(1, 1).Value
  9.     If vA = E.Value And vB = F.Value Then
  10.         sum_product = sum_product + C.Cells(i).Value
  11.     End If
  12. Next i
  13. mergeSum = sum_product
  14. End Function
复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 09:20 , Processed in 0.044107 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表