ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 关于筛选后写值问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-14 09:03 | 显示全部楼层 |阅读模式
本帖最后由 sampsonpon 于 2024-3-15 17:26 编辑


如图,修改下代码:
image.jpg
  1. Sub CHECKTO()

  2.     Application.ScreenUpdating = False
  3.     '3/4改写:
  4.     '如果"TO"工作表里K列有空白,那么
  5.     '1、把K列是空白,所对应的的C列、D列不重复值写入到P2:Q列
  6.     '================================================================================================================
  7.     Dim s1$, s2$, s3$, s4$, s5$
  8.     Dim dic, arr(), i&, iRow&, k, kk%
  9.     With Sheet4
  10.    
  11.         iRow = .Range("A" & Rows.Count).End(3).Row
  12.         kk = 0
  13.         If iRow > 1 Then
  14.             arr = .Range("A2:L" & iRow).Value
  15.             Set dic = CreateObject("Scripting.Dictionary")
  16.             For i = 1 To UBound(arr)
  17.                 If Trim(arr(i, 11)) = "" Then
  18.                     If Trim(arr(i, 3)) <> "" Then dic(CStr(arr(i, 3))) = ""
  19.                 End If
  20.             Next i
  21.                
  22.             iRow = .Range("P" & Rows.Count).End(3).Row
  23.             If iRow > 1 Then .Range("P2:P" & iRow).ClearContents
  24.                 If dic.Count > 0 Then
  25.                     k = dic.keys
  26.                     .Range("P2").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(k)
  27.                     

  28.                 End If
  29.             End If
  30.     End With
  31.    
  32.     Application.ScreenUpdating = True

  33. End Sub
复制代码


T314.zip

32.68 KB, 下载次数: 4

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-15 09:21 | 显示全部楼层
有谁能赐个修改后代码呀

TA的精华主题

TA的得分主题

发表于 2024-3-15 09:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不知理解的是否正确

T314.zip

30.5 KB, 下载次数: 1

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-3-15 10:21 | 显示全部楼层
没改,重新写了个,供参考
Option Explicit

Sub te()
Dim arr, brr(1 To 100, 1 To 2)
Dim dic, k, temp_arr
Dim sr$, i%, m%
Set dic = CreateObject("scripting.dictionary")
arr = Sheet1.Range([a1], [m63]).Value
For i = 2 To UBound(arr)
    If arr(i, 11) = "" Then
        sr = arr(i, 3) & "-" & arr(i, 4)
        dic(sr) = ""
    End If
Next
For Each k In dic.keys
    m = m + 1
    temp_arr = Split(k, "-")
    brr(m, 1) = temp_arr(0)
    brr(m, 2) = temp_arr(1)
Next
Range("P2").Resize(m, 2).Value = brr
End Sub
微信截图_20240315102037.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-15 10:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sxbjzjf110 发表于 2024-3-15 09:49
不知理解的是否正确

还是有点小问题,我稍微改了下,想要的效果如图:

image.jpg
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-15 11:08 | 显示全部楼层
lisongmei 发表于 2024-3-15 10:21
没改,重新写了个,供参考
Option Explicit

brr(1 To 100, 1 To 2)这里表示最多不能超过100行?
arr = Sheet1.Range([a1], [m63]).Value这里给限制区域了,能否加个按照A列或B列或C列的非空行来控制

TA的精华主题

TA的得分主题

发表于 2024-3-15 11:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-3-15 11:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sampsonpon 发表于 2024-3-15 11:08
brr(1 To 100, 1 To 2)这里表示最多不能超过100行?
arr = Sheet1.Range([a1], [m63]).Value这里给限制 ...

我想着你上面的代码都能写出来 ,这里随便改写一下就行啊(比如100改为10000)。我为了方便,直接就取的固定区域。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 05:40 , Processed in 0.039101 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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