首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于计算多行上的小时数的VBA宏

用于计算多行上的小时数的VBA宏
EN

Stack Overflow用户
提问于 2014-01-22 22:00:29
回答 1查看 104关注 0票数 0

我对这个宏有一个问题,它根本不能工作。我正在尝试让宏汇总语言课程的课堂时数,以便检查长记录文件。为了给你一个完整的解释,在第二栏有课程的名称(例如高级英语2),在第三栏有一个版本(它是一个数字)。文件之前按第2列排序,然后按第3列排序。如果课程名称和版本相同,则意味着我需要将小时数添加到总数中。“教师”if指的是在该列中有教师或助理,但后者不需要计算他们的课时(所以我想跳过有一个的行)。第5列和第6列中的单元格是时间(例如13:00,08:45)。我希望代码在第12列中写入小时数(无论格式如何,我知道excel将日期和时间作为数字读取,因此我可以在该单元格中只使用一个数字)。感谢愿意就我的错误给出建议的每一个人:)

英语;英语上层INTERMEDIATE;30;15/01/2014;08:30;13:00;Teacher;A342;C0329

英语;英语上层INTERMEDIATE;30;15/01/2014;14:00;17:00;Teacher;A342;C0329

英语;英语GRAMMAR;36;14/01/2014;08:30;13:00;Teacher;A342;C0329

英语;英语GRAMMAR;36;14/01/2014;14:00;17:00;Teacher;A342;C0329

意大利语;意大利语BASE;7;15/01/2014;08:30;13:00;Teacher;A342;BR240

意大利语;意大利语BASE;7;15/01/2014;14:00;17:00;Teacher;A342;BR240

意大利语;LETTERATURA STORIA;8;16/01/2014;08:30;13:00;Teacher;A342;BR240

意大利语;LETTERATURA STORIA;8;16/01/2014;14:00;17:00;Teacher;A342;BR240

意大利语;每IDIOTI;7;21/01/2014;08:30;13:00;Teacher;A342;C0329意大利语

意大利语;每IDIOTI;7;21/01/2014;14:00;17:00;Teacher;A342;C0329意大利语

西班牙语;LA TAUROMAQUIA;17;14/01/2014;08:30;13:00;Teacher;A342;U6014

西班牙语;LA TAUROMAQUIA;17;14/01/2014;14:00;17:00;Teacher;A342;U6014

西班牙语;西班牙语ADVANCED;19;21/01/2014;10:30;13:00;Teacher;A342;U6012

西班牙语;西班牙语ADVANCED;19;21/01/2014;14:00;17:30;Teacher;A342;U6012

西班牙语;西班牙语123;17;16/01/2014;08:30;13:00;Teacher;A342;U6014

西班牙语;西班牙语123;17;16/01/2014;14:00;17:00;Teacher;A342;U6014

西班牙语;西班牙语ALLEGORIES;18;22/01/2014;08:30;13:00;Teacher;A342;U6014

西班牙语;西班牙语ALLEGORIES;18;22/01/2014;14:00;17:00;Teacher;A342;U6014

西班牙语;西班牙语LOANWORDS;17;15/01/2014;08:30;13:00;Teacher;A342;U6014

西班牙语;西班牙语LOANWORDS;17;15/01/2014;14:00;17:00;Teacher;A342;U6014

西班牙语;西班牙语和葡萄牙语: WHY?;15;23/01/2014;10:30;13:00;Teacher;A342;U6017

西班牙语;西班牙语和葡萄牙语: WHY?;15;23/01/2014;14:00;17:30;Teacher;A342;U6017

法语;法语INTENSIVE;48;07/01/2014;08:30;13:00;CoDocente;00348170101;C0691

法语;法语INTENSIVE;48;07/01/2014;08:30;13:00;Teacher;A342;C0329

法语;法语INTENSIVE;48;07/01/2014;14:00;17:00;CoDocente;00348170101;C0691

法语;法语INTENSIVE;48;07/01/2014;14:00;17:00;Teacher;A342;C0329

法语;法语INTENSIVE;48;08/01/2014;08:30;13:00;CoDocente;00348170101;C0691

法语;法语INTENSIVE;48;08/01/2014;08:30;13:00;Teacher;A342;C0329

法语;法语INTENSIVE;48;08/01/2014;14:00;17:00;CoDocente;00348170101;C0691

法语;法语INTENSIVE;48;08/01/2014;14:00;17:00;Teacher;A342;C0329

法语;法语INTENSIVE;48;09/01/2014;08:30;13:00;CoDocente;00348170101;C0691

法语;法语INTENSIVE;48;09/01/2014;08:30;13:00;Teacher;A342;C0329

法语;法语INTENSIVE;48;09/01/2014;14:00;17:00;Teacher;A342;C0329

法语;法语INTENSIVE;48;09/01/2014;14:00;17:00;CoDocente;00348170101;C0691

法语;法语INTENSIVE;48;10/01/2014;08:30;13:00;Teacher;A342;C0329

法语;法语INTENSIVE;48;10/01/2014;08:30;13:00;CoDocente;00348170101;C0691

法语;法语INTENSIVE;48;10/01/2014;14:00;17:00;Teacher;A342;C0329

法语;法语INTENSIVE;48;10/01/2014;14:00;17:00;CoDocente;00348170101;C0691

这是一个与我的真实数据相似的csv :)

代码语言:javascript
运行
复制
Dim i As Integer
Dim x As Integer
Dim y As Integer
Dim k As Integer
Dim z As Integer
Dim hoursA As Integer
Dim hoursB As Integer
Dim hours As Integer

z = 3
i = 2
k = 12

Do
hours = 0
Do
t = 1
If Cells(i, 2) = Cells(z, 2) Then
    If Cells(i, 3) = Cells(z, 3) Then
        If Cells(i, 5) = "Teacher" Then
            hoursA = Cells(i, 5).Value
            hoursB = Cells(i, 6).Value
            hours = hoursB - hoursA + hours
            Cells(i, k).Value = hours
        End If
    Else
        t = 0
    End If
Else
    t = 0
End If
i = i + 1
z = i + 1

Loop While t > 0

Loop While UCase(Cells(i, 2)) <> ""


 End Sub
EN

回答 1

Stack Overflow用户

发布于 2014-01-22 22:17:00

我发现代码有两个问题。

  1. 时间是以小数形式存储的,但您正在尝试将它们存储在Integers中。将三个Hours变量更改为列D上的类型,但您正在检查Cells(i,5)。将其更改为Cells(i,4)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21284996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档