网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月05日漏签0天
excel吧 关注:281,456贴子:1,550,716
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 10回复贴,共1页
<<返回excel吧
>0< 加载中...

请教一个VBA问题

  • 只看楼主
  • 收藏

  • 回复
  • juyouhh
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
鄙人一直对在VBA中使用数组有一点无所措手足的感觉。比如从一组数值中找到另一组数值所没有的数值,从而形成一个新的数值区域,用数组的办法怎么解决?这个问题使用数组公式应该不难,但用VBA(估计要用到循环)我就觉得无从下手了。
请指教


  • zsh_000
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
举个简单例子吧:
例如你要从A1:A10中找出B1:B10中没有的数据,然后写到C1:C10中.

set a = range("A1:A10") '赋变量a为区域A1:A10
set b = range("B1:B10") '同上
for i = 1 to 10 '循环10次,亦可用变量代替,例如
         ' a.rows.count ,A的决行数.
 '用EXCEL自身的COUNTIF函数统计值在b区域中是否存在.
if application.countif(b,a.cells(i)) < 1 then 
  cells(i,3)=a.cells(i) '<1即不存在时在C列对应的行中写入值
 end if
next i


2025-08-05 14:00:27
广告
不感兴趣
开通SVIP免广告
  • zsh_000
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
上例的题意有点更点,代码的作用是:从A1:A10中,找出B1:B10中没有的数据,并写入C列中.


  • juyouhh
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢zsh先生
有一点,我可能没有表达清楚。我要的C列值是按照它们在A列出现的先后顺序排列起来的,中间不出现空格。请不要用先找出,再排序的办法


  • bengdeng
  • 多才多E
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不知道什么时候ZSH_000才会改掉毛糙的习惯*~_~*
Sub TEXT()
Set a = Range("A1:A10")
Set b = Range("B1:B10")
For i = 1 To b.Count
 If WorksheetFunction.CountIf(a, b.Cells(i)) = 1 Then
 Cells(WorksheetFunction.Match(b.Cells(i), a, 0), 3) = b.Cells(i)
 End If
Next
Range("C1:C" & b.Count).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub


  • juyouhh
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
吧主不要说ZSH了,你自己也弄反了


  • bengdeng
  • 多才多E
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
O_O有吗??
……………


  • zsh_000
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
(*^O^*)不好意思,江山易改,本性难移.让大家见笑了.


2025-08-05 13:54:27
广告
不感兴趣
开通SVIP免广告
  • juyouhh
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
7 回复:请教一个VBA问题 
  O_O有吗?? 
……………… 
 要求是不在B列的项目


  • juyouhh
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
经过努力,改成这样。还请吧主及ZSH二位继续指教。
Sub test()
Columns(3).ClearContents
Set a = Range("a1:a" & Range("a1").End(xlDown))
Set b = Range("b1:b" & Range("b1").End(xlDown))
For i = 1 To a.Count
If WorksheetFunction.CountIf(b, a(i)) = 0 Then
Cells(i, 3) = a(i)
End If
Next
Range("C1:C" & a.Count).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub


  • 218.14.135.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
(*^-^*)改了一点.

Sub test() 
Columns(3).ClearContents 
Set a = Range("a1:a" & Range("a1").End(xlDown).Row) 
Set b = Range("b1:b" & Range("b1").End(xlDown).Row) 
For i = 1 To a.Count 
If WorksheetFunction.CountIf(b, a(i)) = 0 Then 
Cells(i, 3) = a(i) 
End If 
Next 
Range("C1:C" & a.Count).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp 
End Sub


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 10回复贴,共1页
<<返回excel吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示