ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求各位大虾帮忙解决一下vba的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-12-14 16:38 | 显示全部楼层 |阅读模式
Sub 时间转化()
Dim i As Integer
For i = 2 To 401
  If InStr(Cells(i, 7), "天") > 0 Then
       Cells(i, 12).Formula = _
       "=left(g2,find(""天"",g2)-1)*24*3600 + mid(g2,find(""天"",g2)+1,find(""小"",g2)-find(""天"",g2)-1)*3600 + mid(g2,find(""时"",g2)+1,find(""分"",g2)-find(""时"",g2)-1)*60 + mid(g2,find(""分"",g2)+1,len(g2)-find(""分"",g2)-1)"
     ElseIf InStr(Cells(i, 7), "天") = 0 And InStr(Cells(i, 7), "小时") > 0 Then
       Cells(i, 12).Formula = _
       "=left(g2,find(""小"",g2)-1)*3600 + mid(g2,find(""时"",g2)+1,find(""分"",g2)-find(""时"",g2)-1)*60 + mid(g2,find(""分"",g2)+1,len(g2)-find(""分"",g2)-1)"
     ElseIf InStr(Cells(i, 7), "小时") = 0 And InStr(Cells(2, 7), "分") > 0 Then
       Cells(i, 12).Formula = _
       "=left(g2,find(""分"",g2)-1)*60 + mid(g2,find(""分"",g2)+1,len(g2)-find(""分"",g2)-1)"
     ElseIf InStr(Cells(i, 7), "分") = 0 And InStr(Cells(i, 7), "分") > 0 Then
       Cells(i, 12).Formula = "=left(g2,find(""秒"",g2)-1)"
  End If
  Next i
End Sub
目的是为了把导出的时长转化为秒,但由于导出的时长格式有xx天xx小时xx分xx秒,xx小时xx分xx秒,xx分xx秒,xx秒四种,如果只用Excel写的话每次都要筛选和写3次公式,很麻烦 所以想用vba一次性解决,以上代码能实现判断,但是公式里的g2行号不会变化,想请大虾帮忙解决一下问题,困扰一天了!


TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-15 09:10 | 显示全部楼层
求帮助,求解决,求蹂躏!

TA的精华主题

TA的得分主题

发表于 2017-12-15 23:08 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-20 14:17 | 显示全部楼层

试过了  但是返回值在Excel里根本不识别,定义变量j 返回Excel的就是Gj.

TA的精华主题

TA的得分主题

发表于 2018-1-20 21:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-1-21 15:07 | 显示全部楼层
你的思路有问题,你只需要用函数就能调用日期时间单元格的对应数值,如A1单元格的内容为2018年01月21日15:05:10
那second("A1").VALUE就是10

此类函数有
1        Now        一个函数,它返回当前系统的日期和时间。
2        Hour        一个函数,它返回一个介于0到23之间的整数,表示给定时间的小时部分。
3        Minute        一个函数,它返回0到59之间的整数,表示给定时间的分钟部分。
4        Second        一个函数,返回0到59之间的一个整数,表示给定时间的秒数部分。
5        Time        一个函数,它返回当前的系统时间。
6        Timer        一个函数,返回自上午12:00以来的秒数和毫秒数。
7        TimeSerial        一个函数,它返回小时,分钟和秒的特定输入的时间。
8        TimeValue        将输入字符串转换为时间格式的函数。

1        Date        一个函数,它返回当前的系统日期。
2        CDate        一个函数,将给定的输入转换为日期。
3        DateAdd        一个函数,它返回一个指定的时间间隔被添加的日期。
4        DateDiff        一个函数,它返回两个时间段之间的差异。
5        DatePart        一个函数,它返回给定输入日期值的指定部分。
6        DateSerial        函数,返回给定年份,月份和日期的有效日期。
7        FormatDateTime        一个函数,根据提供的参数格式化日期。
8        IsDate        无论提供的参数是否为日期,都返回一个布尔值的函数。
9        Day        一个函数,它返回一个1到31之间的整数,表示指定日期的某一天。
10        Month        一个函数,它返回一个介于1和12之间的整数,表示指定日期的月份。
11        Year        一个函数,它返回一个表示指定日期的年份的整数。
12        MonthName        一个函数,返回指定日期的特定月份的名称。
13        WeekDay        一个函数,返回一个整数(1到7),表示指定日期的星期几。
14        WeekDayName        一个函数,返回指定日期的星期几名称。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 04:02 , Processed in 0.032842 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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