Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2732|回复: 9

[已解决]单元格值格式转换

[复制链接]
发表于 2017-3-14 13:28 | 显示全部楼层 |阅读模式
本帖最后由 z4214488 于 2017-3-14 16:42 编辑

求教:

=IF((TEXT(I2,"0-00-00")-TEXT(G2,"0-00-00"))<=366,"短期","中长期")

这个EXCEL公式,如果用VBA应该怎样写代码?
最佳答案
2017-3-14 16:12
本帖最后由 望帝春心 于 2017-3-14 16:43 编辑

简单处理成数组,执行效率会高很多,用这段代码吧
  1. Sub Ti()
  2.     Dim x, arr
  3.     arr = [g2:i239]
  4.     For x = 1 To UBound(arr)
  5.         arr(x, 2) = IIf(CDate(Format(arr(x, 3), "0000-00-00")) - CDate(Format(arr(x, 1), "0000-00-00")) <= 366, "短期", "中长期")
  6.     Next
  7.     [h2].Resize(UBound(arr), 1) = Application.Index(arr, , 2)
  8. End Sub
复制代码

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-3-14 13:36 | 显示全部楼层
  1. IIf(Cells(2, "i").Value - Cells(2, "g").Value <= 366, "短期", "中长期")
复制代码
大概这样?
回复

使用道具 举报

 楼主| 发表于 2017-3-14 15:06 | 显示全部楼层
回复

使用道具 举报

发表于 2017-3-14 15:11 | 显示全部楼层
z4214488 发表于 2017-3-14 15:06
提示:编辑错误          缺少 :=

你要把这个结果放到哪个单元格就写哪个单元格=IIF。。。。比如CELLS(1,1)=IIF(...)
回复

使用道具 举报

 楼主| 发表于 2017-3-14 15:21 | 显示全部楼层
本帖最后由 z4214488 于 2017-3-14 15:24 编辑
望帝春心 发表于 2017-3-14 15:11
你要把这个结果放到哪个单元格就写哪个单元格=IIF。。。。比如CELLS(1,1)=IIF(...)

都是“短期”,值都=0
回复

使用道具 举报

发表于 2017-3-14 15:22 | 显示全部楼层

把数据发上来看看行么?不要让别人瞎猜好吗?
回复

使用道具 举报

 楼主| 发表于 2017-3-14 15:38 | 显示全部楼层
望帝春心 发表于 2017-3-14 15:22
把数据发上来看看行么?不要让别人瞎猜好吗?

都是中长期了


T.zip (61.5 KB, 下载次数: 1)
回复

使用道具 举报

发表于 2017-3-14 16:03 | 显示全部楼层
简单改了下
  1. Sub Ti()
  2.     Dim x
  3.     For x = 2 To 239
  4.         Range("h" & x) = IIf(CDate(Format(Cells(x, "i"), "0000-00-00")) - CDate(Format(Cells(x, "g"), "0000-00-00")) <= 366, "短期", "中长期")
  5.     Next
  6. End Sub
复制代码


回复

使用道具 举报

发表于 2017-3-14 16:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 望帝春心 于 2017-3-14 16:43 编辑

简单处理成数组,执行效率会高很多,用这段代码吧
  1. Sub Ti()
  2.     Dim x, arr
  3.     arr = [g2:i239]
  4.     For x = 1 To UBound(arr)
  5.         arr(x, 2) = IIf(CDate(Format(arr(x, 3), "0000-00-00")) - CDate(Format(arr(x, 1), "0000-00-00")) <= 366, "短期", "中长期")
  6.     Next
  7.     [h2].Resize(UBound(arr), 1) = Application.Index(arr, , 2)
  8. End Sub
复制代码

回复

使用道具 举报

 楼主| 发表于 2017-3-14 16:40 | 显示全部楼层
望帝春心 发表于 2017-3-14 16:12
简单处理成数据,执行效率会高很多,用这段代码吧

万分感谢!!
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 10:32 , Processed in 0.333522 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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