Excel精英培训网

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

[已解决]130525获取当前时间及拆分单元格问题1-1

[复制链接]
发表于 2013-5-26 12:27 | 显示全部楼层 |阅读模式
问题1 "老师你好,怎么用vba代码把单元格里的公式不显示,
我用语句ActiveCell.FormulaR1C1 = Evaluate(""=MID(R2C1,COLUMN(RC[-1]),1)"")时的出来单元格不正确,
用ActiveCell.FormulaR1C1 = ""=MID(R2C1,COLUMN(RC[-1]),1)""单元格里显示公式,
请老师给我修正下,
或者优化下,
谢谢老师啦"                           
问题2 用vba处理a5单元格里的数值=  b3里的数值切数值是绝对整数,把小数点后全部不要                           
问题3 "用vba处理工作表“数值表”a2,a3,a4……单元格里的数字跟据整数数值每次变化自动往下一单元添加,
如果数值重复时则不添加,如果小于第一次算出的结果时也不添加"                           
最佳答案
2013-5-26 17:15
  1. Sub test()
  2. Dim a, i, j, arr, st, rn As Range, diction
  3. Set diction = CreateObject("scripting.dictionary")
  4. 'Sheets("Sheet2").Range("a2") = Now + Rnd * 10  '检验
  5. Sheets("Sheet2").Range("a2") = Now  '正确
  6. Sheets(1).Cells(5, 1) = Int(Sheets("Sheet2").Range("a2"))
  7. For i = 2 To 16
  8.     Cells(2, i) = Mid([a2] * 1, i - 1, 1)
  9. Next i
  10.     arr = Range("B2:Z2")
  11.     For j = 1 To 25
  12.         st = st & arr(1, j)
  13.     Next j
  14.     Sheets("sheet2").Range("b3") = st
  15.     Erase arr
  16.     Set rn = Sheets(2).Cells(60000, 1).End(xlUp)
  17.     If rn.Row > 1 Then
  18.         arr = Sheets(2).Cells(1, 1).Resize(rn.Row)
  19.         For j = 2 To UBound(arr)
  20.             diction(arr(j, 1)) = ""
  21.         Next j
  22.     End If
  23.     If Sheets(1).Cells(5, 1) > Sheets(2).Cells(2, 1) And Not diction.exists(Sheets(1).Cells(5, 1).Value) Then rn.Offset(1) = Sheets(1).Cells(5, 1)

  24. End Sub
复制代码

130525获取当前时间及拆分单元格问题1-1.rar

11.64 KB, 下载次数: 7

130525获取当前时间及拆分单元格问题1-1

发表于 2013-5-26 13:03 | 显示全部楼层
本帖最后由 ligh1298 于 2013-5-26 13:04 编辑

我也是初学者,个人认为,第1问、第2问解决代码可以是
  1. Sub aa()
  2. Range("a2") = Now '获取当前系统的日期与时间,并写入A2单元格
  3. Range("A2").NumberFormatLocal = "G/通用格式" '单元格格式设置成“常规”
  4. For i = 1 To 16
  5. Cells(2, i + 1) = Mid([a2], i, 1) '提取后,分散到其他单元格
  6. Next
  7. Cells(4, 2) = Int([a2]) '取整,舍去小数部分
  8. End Sub
复制代码
回复

使用道具 举报

发表于 2013-5-26 13:25 | 显示全部楼层

获取当前时间及拆分单元格问题1-1.rar

14.03 KB, 下载次数: 4

回复

使用道具 举报

发表于 2013-5-26 17:15 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2. Dim a, i, j, arr, st, rn As Range, diction
  3. Set diction = CreateObject("scripting.dictionary")
  4. 'Sheets("Sheet2").Range("a2") = Now + Rnd * 10  '检验
  5. Sheets("Sheet2").Range("a2") = Now  '正确
  6. Sheets(1).Cells(5, 1) = Int(Sheets("Sheet2").Range("a2"))
  7. For i = 2 To 16
  8.     Cells(2, i) = Mid([a2] * 1, i - 1, 1)
  9. Next i
  10.     arr = Range("B2:Z2")
  11.     For j = 1 To 25
  12.         st = st & arr(1, j)
  13.     Next j
  14.     Sheets("sheet2").Range("b3") = st
  15.     Erase arr
  16.     Set rn = Sheets(2).Cells(60000, 1).End(xlUp)
  17.     If rn.Row > 1 Then
  18.         arr = Sheets(2).Cells(1, 1).Resize(rn.Row)
  19.         For j = 2 To UBound(arr)
  20.             diction(arr(j, 1)) = ""
  21.         Next j
  22.     End If
  23.     If Sheets(1).Cells(5, 1) > Sheets(2).Cells(2, 1) And Not diction.exists(Sheets(1).Cells(5, 1).Value) Then rn.Offset(1) = Sheets(1).Cells(5, 1)

  24. End Sub
复制代码
回复

使用道具 举报

发表于 2013-5-27 20:55 | 显示全部楼层
来学习的                       
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 16:35 , Processed in 0.295222 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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