ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求助:vba如何改成JS,如下

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-9-29 10:04 | 显示全部楼层 |阅读模式
Sub tqwd1() '打开文件
Dim f1
f1 = Application.GetOpenFilename(filefilter:= _
"excel(*.xls),*.xls")
If f1 <> False Then Workbooks.Open fileName:=f1 _
, ReadOnly:=False
End Sub

TA的精华主题

TA的得分主题

发表于 2024-10-5 18:59 | 显示全部楼层
function ShowFileDialog() {
    let dlgOpen = Application.FileDialog(msoFileDialogOpen);
    dlgOpen.AllowMultiSelect = true;
    dlgOpen.Show();
}

TA的精华主题

TA的得分主题

发表于 2024-10-5 19:02 | 显示全部楼层
  1. function ShowFileDialog() {
  2.     let dlgOpen = Application.FileDialog(msoFileDialogFilePicker);
  3.     dlgOpen.AllowMultiSelect = true; // 允许选择多个文件
  4.     dlgOpen.Title = "请选择文件"; // 对话框标题
  5.     dlgOpen.Show();
  6.    
  7.     if (dlgOpen.SelectedItems.Count > 0) {
  8.         let selectedFiles = dlgOpen.SelectedItems;
  9.         for (let i = 1; i <= selectedFiles.Count; i++) {
  10.             console.log(selectedFiles(i)); // 在控制台输出选中的文件路径
  11.         }
  12.     } else {
  13.         console.log("没有选择任何文件。");
  14.     }
  15. }
复制代码

TA的精华主题

TA的得分主题

发表于 2024-10-6 15:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
受益匪浅~~~~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-10 10:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-10-11 20:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub test()
  2.     Dim r%, i%, m%
  3.     Dim arr, brr, zrr()
  4.     Dim gs$
  5.     Dim d As Object
  6.     Dim rqmin As Date
  7.     Dim rqmax As Date
  8.     Dim rq1 As Date
  9.     Const pcrs As Integer = 2
  10.     Application.ScreenUpdating = False
  11.     Application.DisplayAlerts = False
  12.     Set d = CreateObject("scripting.dictionary")
  13.     Set d1 = CreateObject("scripting.dictionary")
  14.     Set d2 = CreateObject("scripting.dictionary")
  15.     With Worksheets("统计陪餐费")
  16.         rq = .Range("bq1").Value
  17.     End With
  18.     With Worksheets("就餐人数表")
  19.         .AutoFilterMode = False
  20.         r = .Cells(.Rows.Count, 1).End(xlUp).Row
  21.         arr = .Range("a2:a" & r)
  22.         For i = 1 To UBound(arr)
  23.             If Format(arr(i, 1), "yyyymm") = Format(rq, "yyyymm") Then
  24.                 d1(arr(i, 1)) = Empty
  25.             End If
  26.         Next
  27.         riqi = d1.keys
  28.         n = 2
  29.         For Each aa In d1.keys
  30.             d1(aa) = n
  31.             n = n + 3
  32.             If rqmin = #12:00:00 AM# Then
  33.                 rqmin = aa
  34.             Else
  35.                 If rqmin > aa Then
  36.                     rqmin = aa
  37.                 End If
  38.             End If
  39.             If rqmax = #12:00:00 AM# Then
  40.                 rqmax = aa
  41.             Else
  42.                 If rqmax < aa Then
  43.                     rqmax = aa
  44.                 End If
  45.             End If
  46.         Next
  47.         ls = 1 + d1.Count * 3 + 2
  48.         r = .Cells(.Rows.Count, 6).End(xlUp).Row
  49.         arr = .Range("f2:i" & r)
  50.     End With
  51.     For i = 1 To UBound(arr)
  52.         xm = Right(arr(i, 2), 2)
  53.         Select Case arr(i, 2)
  54.             Case "小工友", "大工友", "其它人员"
  55.                 For rq1 = Application.Max(rqmin, arr(i, 3)) To Application.Min(rqmax, arr(i, 4))
  56.                     If d1.exists(rq1) Then
  57.                         n = d1(rq1)
  58.                         If Not d.exists(xm) Then
  59.                             Set d(xm) = CreateObject("scripting.dictionary")
  60.                         End If
  61.                         If Not d(xm).exists(arr(i, 1)) Then
  62.                             ReDim brr(1 To ls)
  63.                             brr(1) = arr(i, 1)
  64.                         Else
  65.                             brr = d(xm)(arr(i, 1))
  66.                         End If
  67.                         brr(n) = 3
  68.                         brr(n + 1) = 5
  69.                         If arr(i, 2) = "大工友" Or arr(i, 2) = "其它人员" Then
  70.                             brr(n + 2) = 5
  71.                         End If
  72.                         d(xm)(arr(i, 1)) = brr
  73.                     End If
  74.                     rq0 = rq1
  75.                 Next
  76.             Case "教师"
  77.                 For rq = Application.Max(rqmin, arr(i, 3)) To Application.Min(rqmax, arr(i, 4))
  78.                     If d1.exists(rq) Then
  79.                         d2(arr(i, 1)) = Empty
  80.                         Exit For
  81.                     End If
  82.                 Next
  83.         End Select
  84.     Next
  85.     If d2.Count <> 0 Then
  86.         Set d("教师") = CreateObject("scripting.dictionary")
  87.         js = d2.keys
  88.         m = 0
  89.         For i = 0 To UBound(riqi)
  90.             n = d1(riqi(i))
  91.             If i <> 0 Then
  92.                 If riqi(i) <> riqi(i - 1) + 1 Then
  93.                     m = m + pcrs '偏移
  94.                 End If
  95.             End If
  96.             If m + 1 > UBound(riqi) Then
  97.                 Exit For
  98.             End If
  99.             For q = 1 To pcrs '陪餐教师个数
  100.                 If Not d("教师").exists(js(m + q - 1)) Then
  101.                     ReDim brr(1 To ls)
  102.                     brr(1) = js(m + q - 1)
  103.                 Else
  104.                     brr = d("教师")(js(m + q - 1))
  105.                 End If
  106.                 brr(n) = 3
  107.                 brr(n + 1) = 5
  108.                 brr(n + 2) = 5
  109.                 d("教师")(js(m + q - 1)) = brr
  110.             Next
  111.         Next
  112.     End If
  113.     With Worksheets("统计陪餐费")
  114.         .UsedRange.Offset(2, 0).Clear
  115.         With .Range("a3")
  116.             .Value = "陪餐人员"
  117.             .Resize(3, 1).Merge
  118.         End With
  119.         n = 2
  120.         For Each aa In d1.keys
  121.             With .Cells(3, n)
  122.                 .NumberFormatLocal = "m月d日"
  123.                 .Value = aa
  124.                 .Resize(1, 3).Merge
  125.             End With
  126.             With .Cells(4, n)
  127.                 .NumberFormatLocal = "[$-zh-CN]aaaa;@"
  128.                 .Value = aa
  129.                 .Resize(1, 3).Merge
  130.             End With
  131.             .Cells(5, n).Resize(1, 3) = Array("旱", "中", "晚")
  132.             n = n + 3
  133.         Next
  134.         With .Cells(3, n)
  135.             .Value = "顿人次"
  136.             .Resize(3, 1).Merge
  137.         End With
  138.         n = n + 1
  139.         With .Cells(3, n)
  140.             .Value = "金额"
  141.             .Resize(3, 1).Merge
  142.         End With
  143.         With .Range("a3").Resize(3, ls)
  144.             .Interior.Color = 10441261
  145.             .Font.Color = 16777215
  146.         End With
  147.         r = 6
  148.         gs = Empty
  149.         For Each aa In Array("工友", "教师", "人员")
  150.             If d.exists(aa) Then
  151.                 m = 0
  152.                 ReDim crr(1 To d(aa).Count, 1 To ls)
  153.                 For Each bb In d(aa).keys
  154.                     brr = d(aa)(bb)
  155.                     If aa = "工友" Or aa = "教师" Then
  156.                         For j = 0 To UBound(riqi) - 1
  157.                             n = j * 3 + 2
  158.                             If riqi(j) <> riqi(j + 1) - 1 Then
  159.                                 brr(n + 2) = Empty
  160.                             End If
  161.                         Next
  162.                     End If
  163.                     m = m + 1
  164.                     For j = 1 To UBound(brr)
  165.                         crr(m, j) = brr(j)
  166.                     Next
  167.                 Next
  168.                 .Cells(r, 1).Resize(UBound(crr), UBound(crr, 2)) = crr
  169.                 .Cells(r, ls - 1).Resize(UBound(crr), 1).FormulaR1C1 = "=COUNT(RC2:RC[-1])"
  170.                 .Cells(r, ls).Resize(UBound(crr), 1).FormulaR1C1 = "=SUM(RC2:RC[-2])"
  171.                 .Cells(r + UBound(crr), 1) = IIf(aa <> "人员", aa & "小计", "其他人员")
  172.                 .Cells(r + UBound(crr), 2).Resize(1, ls - 1).FormulaR1C1 = "=SUM(R" & r & "C:R[-1]C)"
  173.                 gs = gs & "+R" & r + UBound(crr) & "C"
  174.                 r = r + UBound(crr) + 1
  175.             End If
  176.         Next
  177.         .Cells(r, 1) = "总计"
  178.         .Cells(r, 2).Resize(1, ls - 1).FormulaR1C1 = "=" & Mid(gs, 2)
  179.         With .Range("a3").Resize(r - 2, ls)
  180.             .Borders.LineStyle = xlContinuous
  181.             With .Font
  182.                 .Name = "微软雅黑"
  183.                 .Size = 11
  184.             End With
  185.         End With
  186.         .Columns(1).Resize(, ls).AutoFit
  187.         With .UsedRange
  188.             .HorizontalAlignment = xlCenter
  189.             .VerticalAlignment = xlCenter
  190.         End With
  191.     End With
  192.     Application.ScreenUpdating = True
  193.     MsgBox "数据统计完毕!"
  194. End Sub
复制代码
小学后勤陪餐费及收入统计表.rar (47.81 KB, 下载次数: 5)
这代码能改吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-4 00:55 , Processed in 0.056076 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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