Excel精英培训网

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

[已解决]请大神改改代码实现图片功能

[复制链接]
发表于 2022-1-20 13:10 | 显示全部楼层 |阅读模式
大神改一下代码实现如图功能
(请注意一下,数据不是每次都一样多哦 ,有时候就七八九条,有时候二三十,最多上百条数据!但是模式不变,读取过来会出现同一个供应商的东西只有第一条有下面都是空白)

未命名1642655274.png 供应商交期追踪表 - 副本.zip (171.08 KB, 下载次数: 5)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-1-20 13:51 | 显示全部楼层    本楼为最佳答案   
請測試看看,謝謝
Sub test()
Dim Arr, xD, T$, T1$, i&
Set xD = CreateObject("Scripting.Dictionary")
With Sheet1.Range("a1").CurrentRegion
    Arr = .Value
    For i = 2 To UBound(Arr)
        T = Arr(i, 1)
        If T <> "" Then
            xD(T) = Array(T, Arr(i, 2)): T1 = T
        Else
            Arr(i, 1) = xD(T1)(0): Arr(i, 2) = xD(T1)(1)
        End If
    Next
    .Value = Arr
    .Sort Key1:=.Item(11), Order1:=1, Header:=1
End With
End Sub


1.JPG
回复

使用道具 举报

发表于 2022-1-20 14:16 | 显示全部楼层
方法有很多总:
1.数据透视表的时候,就设置好显示的格式如图。勾选重复所有项+以表格形式显示
2.函数公式方法,第一步Ctrl+G定位空值,在编辑栏输入=第一个非空单元格,也就是=A3,按Ctrl+Enter全部填充,同理可以把B列填充,当然也可以选择两列直接定位空值,同样方法填充
3.vba代码:
  1. Sub demo()
  2. Dim i As Integer, H As Integer, arr
  3. H = Sheet1.Range("A65536").End(xlUp).Row
  4. If H = 1 Then End
  5. arr = Sheet1.Range("a2:b" & H)
  6. For i = 1 To UBound(arr, 1)
  7.     If arr(i, 1) = "" Then
  8.         arr(i, 1) = arr(i - 1, 1)
  9.         arr(i, 2) = arr(i - 1, 2)
  10.     End If
  11. Next i
  12.     Sheet1.Range("a2").Resize(UBound(arr, 1), 2) = arr
  13. End Sub
复制代码

1642658846(1).jpg
回复

使用道具 举报

 楼主| 发表于 2022-2-9 09:34 | 显示全部楼层
sam-wang 发表于 2022-1-20 13:51
請測試看看,謝謝
Sub test()
Dim Arr, xD, T$, T1$, i&

供应商交期追踪表 - 副本.zip (615.5 KB, 下载次数: 1)
回复

使用道具 举报

 楼主| 发表于 2022-2-9 15:13 | 显示全部楼层
林木水 发表于 2022-1-20 14:16
方法有很多总:
1.数据透视表的时候,就设置好显示的格式如图。勾选重复所有项+以表格形式显示
2.函数公 ...

这段代码和二楼的大神一样,A列可以正常,B列变成整列复制成一样的了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 07:17 , Processed in 0.661281 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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