Excel精英培训网

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

[已解决]自动填充时间问题

[复制链接]
发表于 2021-4-12 08:24 | 显示全部楼层 |阅读模式
因为sheet2到6数据比较大,当SHEET1确认修改时 ,因为SHEET2到6本表的自动填充时间而导致确认修改很慢,希望大神优化一下
最佳答案
2021-4-12 18:48
yanchuenlei 发表于 2021-4-12 18:10
原本没有  修改后我测试时候输入的

藍色部份,新增、修改!

Sub mo()
   If Sheet1.OptionButton1 Then Set sjsht = Sheet5
   If Sheet1.OptionButton2 Then Set sjsht = Sheet3
   If Sheet1.OptionButton3 Then Set sjsht = Sheet2
   If Sheet1.OptionButton4 Then Set sjsht = Sheet4
   If Sheet1.OptionButton5 Then Set sjsht = Sheet6
   a = Range("a5:aw" & Cells(Rows.Count, 1).End(xlUp).Row)
   With sjsht
      b = .Range("a3:aw" & .Cells(Rows.Count, 1).End(xlUp).Row)
   End With
   Set d = CreateObject("Scripting.Dictionary")
   For i = 1 To UBound(a)
      d.Add a(i, 3) & "," & a(i, 6), i
      For j = 17 To 27
         If a(i, j) <> "" Then a(i, j + 22) = Now
      Next
   Next
   For i = 1 To UBound(b)
      Key = b(i, 3) & "," & b(i, 6)
      If d.exists(Key) Then
         r = d(Key)
         For j = 1 To UBound(a, 2)
            b(i, j) = a(r, j)
         Next
      End If
   Next
   Application.EnableEvents = False
   sjsht.Range("a3").Resize(UBound(b), UBound(b, 2)) = b
   Application.EnableEvents = True
   Sheet1.Range("a5").Resize(UBound(a), UBound(a, 2)).ClearContents

End Sub

祝順心,南無阿彌陀佛!


2021年物业费明细 - 副本.rar

167.05 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2021-4-12 13:29 | 显示全部楼层
Sub mo()
   If Sheet1.OptionButton1 Then Set sjsht = Sheet5
   If Sheet1.OptionButton2 Then Set sjsht = Sheet3
   If Sheet1.OptionButton3 Then Set sjsht = Sheet2
   If Sheet1.OptionButton4 Then Set sjsht = Sheet4
   If Sheet1.OptionButton5 Then Set sjsht = Sheet6
   a = Range("a5:aa" & Cells(Rows.Count, 1).End(xlUp).Row)
   With sjsht
      b = .Range("a3:aa" & .Cells(Rows.Count, 1).End(xlUp).Row)
   End With
   Set d = CreateObject("Scripting.Dictionary")
   For i = 1 To UBound(a)
      d.Add a(i, 3) & "," & a(i, 6), i
   Next
   For i = 1 To UBound(b)
      Key = b(i, 3) & "," & b(i, 6)
      If d.exists(Key) Then
         r = d(Key)
         For j = 1 To UBound(a, 2)
            b(i, j) = a(r, j)
         Next
      End If
   Next
   sjsht.Range("a3").Resize(UBound(b), UBound(b, 2)) = b
   Sheet1.Range("a5").Resize(UBound(a), UBound(a, 2)).ClearContents
End Sub

祝順心,南無阿彌陀佛!


2021年物业费明细 - 副本.rar

164.88 KB, 下载次数: 8

回复

使用道具 举报

发表于 2021-4-12 14:24 | 显示全部楼层
沒有看到你有用 Worksheet_Change
新增藍色部份代碼

Sub mo()

   If Sheet1.OptionButton1 Then Set sjsht = Sheet5
   If Sheet1.OptionButton2 Then Set sjsht = Sheet3
   If Sheet1.OptionButton3 Then Set sjsht = Sheet2
   If Sheet1.OptionButton4 Then Set sjsht = Sheet4
   If Sheet1.OptionButton5 Then Set sjsht = Sheet6
   a = Range("a5:aa" & Cells(Rows.Count, 1).End(xlUp).Row)
   With sjsht
      b = .Range("a3:aa" & .Cells(Rows.Count, 1).End(xlUp).Row)
   End With
   Set d = CreateObject("Scripting.Dictionary")
   For i = 1 To UBound(a)
      d.Add a(i, 3) & "," & a(i, 6), i
   Next
   For i = 1 To UBound(b)
      Key = b(i, 3) & "," & b(i, 6)
      If d.exists(Key) Then
         r = d(Key)
         For j = 1 To UBound(a, 2)
            b(i, j) = a(r, j)
         Next
      End If
   Next
   Application.EnableEvents = False
   sjsht.Range("a3").Resize(UBound(b), UBound(b, 2)) = b
   Application.EnableEvents = True
   Sheet1.Range("a5").Resize(UBound(a), UBound(a, 2)).ClearContents

End Sub


祝順心,南無阿彌陀佛!

2021年物业费明细 - 副本.rar

161.16 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2021-4-12 14:32 | 显示全部楼层
本帖最后由 yanchuenlei 于 2021-4-12 14:36 编辑
cutecpu 发表于 2021-4-12 13:29
Sub mo()
   If Sheet1.OptionButton1 Then Set sjsht = Sheet5
   If Sheet1.OptionButton2 Then Set sj ...

回复

使用道具 举报

 楼主| 发表于 2021-4-12 14:40 | 显示全部楼层
本帖最后由 yanchuenlei 于 2021-4-12 14:42 编辑
cutecpu 发表于 2021-4-12 14:24
沒有看到你有用 Worksheet_Change
新增藍色部份代碼

大神 SHEET2,3,4,5,6日期不自动填充了
回复

使用道具 举报

发表于 2021-4-12 15:28 | 显示全部楼层
yanchuenlei 发表于 2021-4-12 14:40
大神 SHEET2,3,4,5,6日期不自动填充了

您好,可以舉個例子嗎
回复

使用道具 举报

 楼主| 发表于 2021-4-12 16:45 | 显示全部楼层
cutecpu 发表于 2021-4-12 15:28
您好,可以舉個例子嗎

钓鱼台A表 有自动填充日期的代码 如Q列出现数据  AM应该自动录入当前日期 现在在表一里面输入1111确认修改之后 钓鱼台A表AM列不自动录入当前时间
1618216897(1).png
回复

使用道具 举报

发表于 2021-4-12 16:56 | 显示全部楼层
yanchuenlei 发表于 2021-4-12 16:45
钓鱼台A表 有自动填充日期的代码 如Q列出现数据  AM应该自动录入当前日期 现在在表一里面输入1111确认修 ...

Q 列的數據 是原本就有的,還是修改後才有的?
回复

使用道具 举报

 楼主| 发表于 2021-4-12 18:10 | 显示全部楼层
cutecpu 发表于 2021-4-12 16:56
Q 列的數據 是原本就有的,還是修改後才有的?

原本没有  修改后我测试时候输入的
回复

使用道具 举报

发表于 2021-4-12 18:48 | 显示全部楼层    本楼为最佳答案   
yanchuenlei 发表于 2021-4-12 18:10
原本没有  修改后我测试时候输入的

藍色部份,新增、修改!

Sub mo()
   If Sheet1.OptionButton1 Then Set sjsht = Sheet5
   If Sheet1.OptionButton2 Then Set sjsht = Sheet3
   If Sheet1.OptionButton3 Then Set sjsht = Sheet2
   If Sheet1.OptionButton4 Then Set sjsht = Sheet4
   If Sheet1.OptionButton5 Then Set sjsht = Sheet6
   a = Range("a5:aw" & Cells(Rows.Count, 1).End(xlUp).Row)
   With sjsht
      b = .Range("a3:aw" & .Cells(Rows.Count, 1).End(xlUp).Row)
   End With
   Set d = CreateObject("Scripting.Dictionary")
   For i = 1 To UBound(a)
      d.Add a(i, 3) & "," & a(i, 6), i
      For j = 17 To 27
         If a(i, j) <> "" Then a(i, j + 22) = Now
      Next
   Next
   For i = 1 To UBound(b)
      Key = b(i, 3) & "," & b(i, 6)
      If d.exists(Key) Then
         r = d(Key)
         For j = 1 To UBound(a, 2)
            b(i, j) = a(r, j)
         Next
      End If
   Next
   Application.EnableEvents = False
   sjsht.Range("a3").Resize(UBound(b), UBound(b, 2)) = b
   Application.EnableEvents = True
   Sheet1.Range("a5").Resize(UBound(a), UBound(a, 2)).ClearContents

End Sub

祝順心,南無阿彌陀佛!


2021年物业费明细 - 副本.rar

165.75 KB, 下载次数: 11

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 14:57 , Processed in 0.306912 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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