设为首页收藏本站

 找回密码
 立即注册

只需一步,快速开始

搜索
查看: 239|回复: 28

遍历工作表固定位置添补数据

 火.. [复制链接]
累计签到:28 天
连续签到:1 天
灌水成绩
2
68
4131
主题
帖子
积分

等级头衔

ID : 1017

助理工程师

积分成就 测量币 : 4131
在线时间 : 0 小时
注册时间 : 2025-12-20
最后登录 : 2026-6-14

勋章
UID勋章测量员
发表于 2026-5-12 15:31:00 | 显示全部楼层 |阅读模式 IP:香港
首先感谢老师们帮忙之中的帮忙!


需求:遍历需要填凑数据的表(表名11),假如查到该表J3单元格的姓名在“批量填充”表里存在,则填充到11表指定的单元格位置,
         比方:11表sheet2的J3单元格为张三,则sheet2的A1单元格填充3,B5单元格填充16,D3单元格填充29
                   11表sheet3的J3单元格为李四,则sheet3的A1单元格填充8,B5单元格填充18,D3单元格填充38
                   也就是“批量填充”表的B1:D1单元格是指示数据要填充的目标工作簿单元格的位置。
         遍历的时候,对能查到的人(也就是实行了填充的人)在“批量填充”表名字相应单元格标志颜色,以便知道哪些人还没有实行填充。
         宏在“批量填充”表,对11表进行填充。

再次感谢老师的帮助!多谢!
11.rar
累计签到:10 天
连续签到:1 天
灌水成绩
2
39
1259
主题
帖子
积分

等级头衔

ID : 1335

高级技术员

积分成就 测量币 : 1259
在线时间 : 0 小时
注册时间 : 2026-4-5
最后登录 : 2026-7-2

勋章
测量员UID勋章测量学徒
发表于 2026-5-12 16:45:00 | 显示全部楼层 IP:香港
参与一下,仅供参考。。。
批量填充 2026-05-12 16-45-40.zip
回复

使用道具 举报

累计签到:27 天
连续签到:1 天
灌水成绩
0
61
3619
主题
帖子
积分

等级头衔

ID : 788

助理工程师

积分成就 测量币 : 3619
在线时间 : 0 小时
注册时间 : 2025-9-11
最后登录 : 2026-7-6

勋章
UID勋章测量学徒测量员
发表于 2026-5-12 16:46:00 | 显示全部楼层 IP:香港
代码如下。。。
Sub test()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    tm = Timer
    Dim wb As Workbook, sht As Worksheet, sh As Worksheet
    Set wb = ThisWorkbook
    file = wb.Path & "\11.xlsx"
    Set sht = wb.Sheets("Sheet1")
    arr = sht.[a1].CurrentRegion
    sht.Range(sht.[a3], sht.Cells(UBound(arr), 1)).Interior.Color = xlNone
    Set d = CreateObject("scripting.dictionary")
    For i = 3 To UBound(arr)
        d(arr(i, 1)) = i
    Next
    With Workbooks.Open(file, 0)
        For Each sh In .Sheets
            s = sh.[j3]
            If d.exists(s) Then
                sht.Cells(d(s), 1).Interior.Color = vbGreen
                For j = 1 To 3
                    sh.Range(arr(1, 1 + j)) = arr(d(s), j + 1)
                Next
            End If
        Next
        .Save
        '        .Close
    End With
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    MsgBox "共耗时:" & Format(Timer - tm, "0.0000") & " 秒!!!", 64
    Set d = Nothing
End Sub
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
灌水成绩
0
64
3952
主题
帖子
积分

等级头衔

ID : 932

助理工程师

积分成就 测量币 : 3952
在线时间 : 0 小时
注册时间 : 2026-2-20
最后登录 : 2026-6-11

勋章
UID勋章测量学徒测量员
发表于 2026-5-12 16:47:00 | 显示全部楼层 IP:香港
Sub 遍历填充()
Application.ScreenUpdating = False
Dim ar As Variant
Dim i As Long, r As Long
Dim br()
Dim d As Object
Set d = CreateObject("scripting.dictionary")
Dim rn As Range
LJ = ThisWorkbook.Path & "\"
f = Dir(LJ & "11.xls*")
If f = "" Then MsgBox "找不到11文件!": End
With Sheets("sheet1")
    r = .Cells(Rows.Count, 1).End(xlUp).Row
    If r < 2 Then MsgBox &quot;数据源工作表为空,请先导入数据!&quot;: End
    .Range(&quot;e2&quot;).Resize(r - 1, 1).Interior.ColorIndex = 0
    ar = .Range(&quot;a1&quot;).Resize(r, 5)
    For i = 2 To UBound(ar)
        s = ar(i, 1)
        If s  &quot;&quot; Then
            d(s) = i
        End If
    Next i
    Set wb = Workbooks.Open(LJ & f, 0)
    For Each sh In wb.Worksheets
        xm = sh.[j3].Value
        xh = d(xm)
        If xh  &quot;&quot; Then
            If rn Is Nothing Then
                Set rn = .Cells(xh, 1)
            Else
                Set rn = Union(rn, .Cells(xh, 1))
            End If
            sh.[a1] = ar(xh, 2)
            sh.[b5] = ar(xh, 3)
            sh.[d3] = ar(xh, 4)
        End If
    Next sh
    If Not rn Is Nothing Then rn.Interior.ColorIndex = 3
    wb.Close True
End With
Application.ScreenUpdating = True
MsgBox &quot;ok!&quot;
End Sub
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
灌水成绩
0
31
1807
主题
帖子
积分

等级头衔

ID : 1109

高级技术员

积分成就 测量币 : 1807
在线时间 : 0 小时
注册时间 : 2025-9-19
最后登录 : 2026-7-4

勋章
测量员UID勋章测量学徒
发表于 2026-5-12 16:50:00 | 显示全部楼层 IP:香港
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
灌水成绩
0
34
2007
主题
帖子
积分

等级头衔

ID : 1341

高级技术员

积分成就 测量币 : 2007
在线时间 : 0 小时
注册时间 : 2025-10-31
最后登录 : 2026-7-3

勋章
测量员UID勋章测量学徒
发表于 2026-5-12 16:56:00 | 显示全部楼层 IP:香港
回复

使用道具 举报

累计签到:31 天
连续签到:2 天
灌水成绩
3
190
4147
主题
帖子
积分

等级头衔

ID : 826

助理工程师

积分成就 测量币 : 4147
在线时间 : 0 小时
注册时间 : 2026-1-8
最后登录 : 2026-6-26

勋章
UID勋章测量学徒测量员
发表于 2026-5-12 17:04:00 | 显示全部楼层 IP:香港

  • Sub test()
  • On Error Resume Next
  • Set d = CreateObject(&quot;scripting.dictionary&quot;)
  • ar = ActiveSheet.[a1].CurrentRegion.Resize(, 5)
  • For i = 2 To UBound(ar)
  •     d(ar(i, 1)) = i
  • Next
  • Application.ScreenUpdating = False
  • Set wb = Workbooks.Open(ThisWorkbook.Path & &quot;\11.xlsx&quot;)
  • For Each sh In wb.Sheets
  •     s = sh.[j3].Value
  •     If d.exists(s) Then
  •         sh.[a1] = ar(d(s), 2)
  •         sh.[b5] = ar(d(s), 3)
  •         sh.[d7] = ar(d(s), 4)
  •         ar(d(s), 5) = &quot;已填充&quot;
  •     End If
  • Next
  • wb.Close True
  • ActiveSheet.[a1].CurrentRegion.Resize(, 5) = ar
  • Application.ScreenUpdating = TrueMsgBox &quot;ok!&quot;End Sub
回复

使用道具 举报

累计签到:33 天
连续签到:1 天
灌水成绩
1
77
3949
主题
帖子
积分

等级头衔

ID : 729

助理工程师

积分成就 测量币 : 3949
在线时间 : 0 小时
注册时间 : 2026-4-13
最后登录 : 2026-6-29

勋章
UID勋章测量学徒测量员
发表于 2026-5-12 17:44:00 | 显示全部楼层 IP:香港
参与一下。。。

11.zip
回复

使用道具 举报

累计签到:27 天
连续签到:1 天
灌水成绩
14
56
5244
主题
帖子
积分

等级头衔

ID : 604

助理工程师

积分成就 测量币 : 5244
在线时间 : 0 小时
注册时间 : 2026-4-18
最后登录 : 2026-6-28

勋章
UID勋章测量学徒测量员
发表于 2026-5-12 17:45:00 | 显示全部楼层 IP:香港

  • Sub ykcbf()  '//2026.5.12
  •     Application.ScreenUpdating = False
  •     p = ThisWorkbook.Path & Application.PathSeparator
  •     f = p & &quot;11.xlsx&quot;
  •     ReDim brr(1 To 10 ^ 4, 1 To 4)
  •     Set wb = Workbooks.Open(f, 0, True, , False)
  •     For Each sht In wb.Sheets
  •         If sht.[j3].Value  Empty Then
  •             m = m + 1
  •             With sht
  •                 brr(m, 1) = .[j3].Value
  •                 brr(m, 2) = .[a1].Value
  •                 brr(m, 3) = .[b5].Value
  •                 brr(m, 4) = .[d7].Value
  •             End With
  •         End If
  •     Next
  •     wb.Close False
  •     With Sheets(&quot;Sheet1&quot;)
  •         .UsedRange.Offset(2).ClearContents
  •         .[a3].Resize(m, 4) = brr
  •         .[a3].Resize(m, 4).Borders.LineStyle = 1
  •     End With
  •     Application.ScreenUpdating = True
  •     MsgBox &quot;OK!&quot;, vbInformation
  • End Sub
回复

使用道具 举报

累计签到:32 天
连续签到:1 天
灌水成绩
0
58
3336
主题
帖子
积分

等级头衔

ID : 1014

助理工程师

积分成就 测量币 : 3336
在线时间 : 0 小时
注册时间 : 2026-2-1
最后登录 : 2026-6-8

勋章
UID勋章测量员
发表于 2026-5-12 19:05:00 | 显示全部楼层 IP:香港
Option Explicit
Sub test()
    Dim ar, i&, j&, strFileName$, strPath$, wks As Worksheet
   
    Application.ScreenUpdating = False
   
    strPath = ThisWorkbook.Path & &quot;\&quot;
    strFileName = strPath & &quot;11.xlsx&quot;
    If Dir(strFileName) = &quot;&quot; Then
        Application.ScreenUpdating = True
        MsgBox &quot;目标文件不存在&quot;, vbCritical: Exit Sub
    End If
   
    ar = Range(&quot;A1&quot;).CurrentRegion.Value
    With Workbooks.Open(strFileName)
        For i = 3 To UBound(ar)
            For Each wks In .Worksheets
                If wks.Range(&quot;J3&quot;).Value = ar(i, 1) Then
                    With wks
                        For j = 2 To UBound(ar, 2)
                            .Range(ar(1, j)).Interior.Color = vbRed
                            .Range(ar(1, j)).Value = ar(i, j)
                        Next j
                    End With
                End If
            Next
        Next i
        .Close True
    End With
   
    Application.ScreenUpdating = True
    Beep
End Sub
回复

使用道具 举报

快速回复换一批
顶顶顶
好贴帮顶
2333333333
自古二楼出人才? 我来占个前排,楼主继续,不要停! 🏃‍♂️💨
催更小分队上线! 楼主分析得太透彻了,期待下一篇更新! ⏳🔥
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|精密测量技术论坛 ( 桂ICP备2026007449号-1 )

GMT+8, 2026-7-7 19:38 , Processed in 0.215209 second(s), 52 queries .

Powered by 精密测量技术论坛

© 2025-2026 联系站长

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