ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 数据导入时将原有数据删除后导入

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-22 18:35 | 显示全部楼层 |阅读模式
附件功能基本实现,也不知道代码写的是否合理,反正效果是达到了,但是还有个问题,同一日期、同一班组数据,假如第一次录入数据错误,第二次重新记录保存时,如何先将对应班组数据表内第一次导入日期数据删除呢?删除后再保存最新数据,请大神帮忙看看如何修改。
Sub 保存()
Dim i As Long, bz As String, rng As Range
Set d = CreateObject("scripting.dictionary")
For Each sh In Sheets
    d(sh.Name) = ""
Next sh
i = 3
bz = Worksheets("sheet1").Cells(i, "F").Value
Do While bz <> ""
If Not d.exists(bz) Then
        p = MsgBox("无该班组信息")
        Exit Sub
        Else
        End If
Dim a As Byte
For a = 3 To 30 Step 1
   Select Case Range("F" & a).Value
          Case Is <> ""
               Sheet1.Range("i" & a).Value = Format$(Now, "HH:MM:SS-YY/M/D")
          Case Else
               Sheet1.Range("i" & a).Value = ""
End Select
Next a
Set rng = Worksheets(bz).Range("A65536").End(xlUp).Offset(1, 0)
Worksheets("sheet1").Cells(i, "A").Resize(1, 9).Copy rng
i = i + 1
bz = Worksheets("sheet1").Cells(i, "F").Value
Loop
End Sub

kaoqin.7z

20.81 KB, 下载次数: 15

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-22 21:27 | 显示全部楼层
VBA初学者,各位大神帮帮忙看一下,这个代码如何修改

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-22 21:28 | 显示全部楼层
小弟已经发了好几个帖子求助,跪求各位大神帮助,万分感谢!

TA的精华主题

TA的得分主题

发表于 2019-3-23 07:55 | 显示全部楼层
  1. Sub ±£′&#230;()
  2.     Dim i As Long, bz As String, rng As Range
  3.     Set d = CreateObject("scripting.dictionary")
  4.     For Each sh In Sheets
  5.         d(sh.Name) = ""
  6.     Next sh
  7.     Dim a As Byte
  8.     For a = 3 To Sheet1.Cells(Rows.Count, "f").End(3).Row Step 1
  9.        Select Case Range("F" & a).Value
  10.               Case Is <> ""
  11.                    Sheet1.Range("i" & a).Value = Format$(Now, "HH:MM:SS-YY/M/D")
  12.               Case Else
  13.                    Sheet1.Range("i" & a).Value = ""
  14.         End Select
  15.     Next a
  16.     i = 3
  17.     bz = Worksheets("sheet1").Cells(i, "F").Value
  18.     Do While bz <> ""
  19.         If Not d.exists(bz) Then
  20.             p = MsgBox("&#206;T&#184;&#195;°à×éD&#197;&#207;¢")
  21.             Exit Sub
  22.             Else
  23.         End If
  24.    
  25.         Set rng = Worksheets(bz).Range("A65536").End(xlUp).Offset(1, 0)
  26.         Worksheets("sheet1").Cells(i, "A").Resize(1, 9).Copy rng
  27.         i = i + 1
  28.         bz = Worksheets("sheet1").Cells(i, "F").Value
  29.     Loop
  30. End Sub
复制代码

以上代码做了调整,供楼主参考
假如第一次录入数据错误,第二次怎么能确定哪一条是错误的?如果知道哪条错误,根据关键字匹配然后覆盖掉即可

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-23 19:39 | 显示全部楼层
非常感谢!可能是我描述的不清楚,是根据日期来判定,假如3-12日数据已经保存,再次点击保存时,直接将第一次导入所有3-12日所有行数据删除,然后再保存最新3-12日数据,最终结果是,同一天日期同一个人只有一条记录,请帮忙修改一下,这个地方感觉很简单,但是一直写不出来。
另外,假如保存数据已到3-12日,再次重新录入3-11日数据时,保存至对应班组工作表时,只需要继续在空白单元行记录即可,记录顺序无所谓。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-23 19:46 | 显示全部楼层
liulang0808 发表于 2019-3-23 07:55
以上代码做了调整,供楼主参考
假如第一次录入数据错误,第二次怎么能确定哪一条是错误的?如果知道哪条 ...

说简单点,就是不需要判定录入数据是否错误,只需要判定同一天日期不重复,因此只需要再次录入同一天数据时,首先将班组工作表内记录原有日期所有数据删除即可。

TA的精华主题

TA的得分主题

发表于 2019-3-23 19:59 | 显示全部楼层
Mark.W 发表于 2019-3-23 19:46
说简单点,就是不需要判定录入数据是否错误,只需要判定同一天日期不重复,因此只需要再次录入同一天数据 ...

录入完,再去遍历各张表,根据关键字检索,从下遍历表格,看看当天是否有两条记录,有的话,删除上面那一条

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-23 21:37 | 显示全部楼层
liulang0808 发表于 2019-3-23 19:59
录入完,再去遍历各张表,根据关键字检索,从下遍历表格,看看当天是否有两条记录,有的话,删除上面那一 ...

这个方式可以,但是我想将代码加入保存代码之后,是想保存后直接进入保存工作表内执行这个代码,这样可以吗? 帮忙指教,谢谢!
Dim cf
    cf = [c65536].End(xlUp).Row
    cf = cf - 1
    While cf >= 2
        If Cells(cf, "b") = Cells(cf + 1, "b") Then
            Rows(cf).Delete
        Else
            cf = cf - 1
        End If
    Wend

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-24 09:43 | 显示全部楼层
liulang0808 发表于 2019-3-23 19:59
录入完,再去遍历各张表,根据关键字检索,从下遍历表格,看看当天是否有两条记录,有的话,删除上面那一 ...

你好,貌似用这样的方式有问题,因为我的条件是日期列,当天日期会有多个人存在,如果用这中方式,只会保留日期列的最后一个人,所以不行,最好是在数据保存导入指定表格时,首先进行判定,如果导入表内是否有要导入日期数据,是则找到这些行数据将其删除,然后再将数据保存,否则直接保存,请帮忙看一下,万分感谢

TA的精华主题

TA的得分主题

发表于 2019-3-31 15:17 | 显示全部楼层
Mark.W 发表于 2019-3-24 09:43
你好,貌似用这样的方式有问题,因为我的条件是日期列,当天日期会有多个人存在,如果用这中方式,只会保 ...

首先判断时间是否是当天,然后再根据第二个关键字判断是否有重复。。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-23 22:00 , Processed in 0.049189 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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