Excel精英培训网

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

[已解决]请老师帮助用VBA弄下

[复制链接]
发表于 2017-4-4 10:37 | 显示全部楼层 |阅读模式
请老师帮助下,VBA做或公式做都可以。急在线等谢谢了
最佳答案
2017-4-4 19:55
  1. Sub tt()
  2.     Dim arr1, arr2, d
  3.     Dim i%, str$
  4.     Set d = CreateObject("scripting.dictionary")
  5.     arr1 = Sheet1.UsedRange
  6.     arr2 = Sheet2.UsedRange
  7.     For i = 3 To UBound(arr2)
  8.         str = Application.Trim(arr2(i, 1))
  9.         If str <> "" Then d(str) = ""
  10.     Next
  11.     For i = 2 To UBound(arr1)
  12.         str = Application.Trim(arr1(i, 1))
  13.         If Not d.exists(str) Then
  14.         d.Add str, "无"
  15.         End If
  16.     Next
  17.     Sheet3.Range("a3").Resize(d.Count, 1) = Application.Transpose(d.Keys)
  18.     Sheet3.Range("b3").Resize(d.Count, 1) = Application.Transpose(d.items)
  19. End Sub
  20. 大概怎样
复制代码

VBA编写.rar

15.36 KB, 下载次数: 10

应该不麻烦

 楼主| 发表于 2017-4-4 10:43 | 显示全部楼层
我说的有什么不明白的地方还请老师回复,我在线说明。谢谢
说的比较多,简单来说就是要做个总表表3,包含基础表2和基础表1。表1有的表2没有的在表3里显示家红色
回复

使用道具 举报

 楼主| 发表于 2017-4-4 10:44 | 显示全部楼层
判定标准用的是10位代码,10位代码后面的不用加入判断。
回复

使用道具 举报

发表于 2017-4-4 19:52 | 显示全部楼层
Public Sub master()
Dim vaSheet1data As Variant
Dim vaSheet2data As Variant
Dim lS1Dim1 As Long, lS1Dim2 As Long
Dim lS2Dim1 As Long, lS2Dim2 As Long
Dim iFinded As Integer
Dim i As Long
Dim rng As Range
i = 0
vaSheet1data = Sheet1.Range("a1").CurrentRegion
vaSheet2data = Sheet2.Range("a1").CurrentRegion
With Sheet3
    .Range("a:a").Clear
    .Range("a1").Resize(UBound(vaSheet2data, 1), UBound(vaSheet2data, 2)) = vaSheet2data
    For lS1Dim1 = 1 To UBound(vaSheet1data, 1)
        iFinded = 0
        For lS2Dim1 = 1 To UBound(vaSheet2data, 1)
            If Left(vaSheet1data(lS1Dim1, 1), 12) Like Left(vaSheet2data(lS2Dim1, 1), 12) Then
                 iFinded = 1
                 Exit For
            End If
        Next
        If iFinded = 0 Then
        With .Range("a1048576").End(xlUp).Offset(i, 0)
            .Value = vaSheet1data(lS1Dim1, 1)
            .Interior.ColorIndex = 3
        End With
        i = i + 1
        End If
    Next
End With
End Sub
但是表一的科目都在表二中?
回复

使用道具 举报

发表于 2017-4-4 19:55 | 显示全部楼层    本楼为最佳答案   
  1. Sub tt()
  2.     Dim arr1, arr2, d
  3.     Dim i%, str$
  4.     Set d = CreateObject("scripting.dictionary")
  5.     arr1 = Sheet1.UsedRange
  6.     arr2 = Sheet2.UsedRange
  7.     For i = 3 To UBound(arr2)
  8.         str = Application.Trim(arr2(i, 1))
  9.         If str <> "" Then d(str) = ""
  10.     Next
  11.     For i = 2 To UBound(arr1)
  12.         str = Application.Trim(arr1(i, 1))
  13.         If Not d.exists(str) Then
  14.         d.Add str, "无"
  15.         End If
  16.     Next
  17.     Sheet3.Range("a3").Resize(d.Count, 1) = Application.Transpose(d.Keys)
  18.     Sheet3.Range("b3").Resize(d.Count, 1) = Application.Transpose(d.items)
  19. End Sub
  20. 大概怎样
复制代码

帮助编写公式.rar

28.06 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2017-4-4 21:06 | 显示全部楼层

谢谢老师的帮助,我回家了,家里没有高版本的EXCEL,我的是2003版本的,老师能否帮我转换成2003的我在试试,因为很期待,很想现在就看看,我自己拿2003的自己又填写了点数据测试结果不对呀。
回复

使用道具 举报

 楼主| 发表于 2017-4-4 21:07 | 显示全部楼层
wenzili 发表于 2017-4-4 19:52
Public Sub master()
Dim vaSheet1data As Variant
Dim vaSheet2data As Variant

老师好,我回家了,家里只有2003的excel  ,我哪2003的测试了下,提示中断要调试,能否帮助我转换成2003的我下载在试试,谢谢老师呀

提示这个.Range("a1").Resize(UBound(vaSheet2data, 1), UBound(vaSheet2data, 2)) = vaSheet2data中断
回复

使用道具 举报

发表于 2017-4-4 21:12 | 显示全部楼层
With .Range("a1048576").End(xlUp).Offset(i, 0),
改为With .Range("a65536").End(xlUp).Offset(i, 0),

试试
回复

使用道具 举报

 楼主| 发表于 2017-4-4 21:34 | 显示全部楼层
wenzili 发表于 2017-4-4 21:12
With .Range("a1048576").End(xlUp).Offset(i, 0),
改为With .Range("a65536").End(xlUp).Offset(i, 0), ...

该完了老师不行,.Range("a1").Resize(UBound(vaSheet2data, 1), UBound(vaSheet2data, 2)) = vaSheet2data

这中断,提示类型不匹配

回复

使用道具 举报

发表于 2017-4-4 21:55 | 显示全部楼层
excel白兔 发表于 2017-4-4 21:34
该完了老师不行,.Range("a1").Resize(UBound(vaSheet2data, 1), UBound(vaSheet2data, 2)) = vaSheet2da ...

那就不知道了,我是2010,没有报错
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 21:15 , Processed in 0.334081 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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