Excel精英培训网

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

[已解决]求救,批量复制配偶相关信息,上下行不对应那种。

[复制链接]
发表于 2010-9-7 03:47 | 显示全部楼层 |阅读模式

刚才发的好像看不到。重发次。恳请高手帮忙。。。不胜感激。。。。

XK0oUghY.rar (2.2 KB, 下载次数: 6)

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2010-9-7 03:49 | 显示全部楼层

我的QQ110745948或者发邮件给我都可以。等待高手解救。。。。

回复

使用道具 举报

发表于 2010-9-7 08:33 | 显示全部楼层

gbgO8SmP.rar (3.82 KB, 下载次数: 6)

回复

使用道具 举报

发表于 2010-9-7 09:10 | 显示全部楼层

我怎么就没有想到用SUMPRODUCT呢!

回复

使用道具 举报

 楼主| 发表于 2010-9-7 10:09 | 显示全部楼层

还是不行啊。有没有函数的解析啊。我代入正确的数据时全部数据就出错。而且。我选取一段数据粘贴进去,也不行。不知道怎么回事。可能是我太笨了吧。能再指导一下吗?我的证件号码是15或18位的身份证。编码也是18位的数字。是不是因为这个出错啊?

回复

使用道具 举报

 楼主| 发表于 2010-9-7 12:07 | 显示全部楼层

在线等待高手。。。。

回复

使用道具 举报

发表于 2010-9-7 14:19 | 显示全部楼层    本楼为最佳答案   

Sub wayy()
Dim arr1, arr2
Dim x, y, mrow As Long
[J2:O65536].ClearContents
Application.ScreenUpdating = False
arr1 = Range("A2", [I65536].End(xlUp))
ReDim arr2(1 To UBound(arr1), 1 To 6)
For x = 1 To UBound(arr1)
 If arr1(x, 8) = "子" Or arr1(x, 8) = "女" Then
   For y = x + 1 To UBound(arr1)
     If arr1(y, 9) = arr1(x, 9) Then
       If arr1(y, 8) = "户主" Then
        arr2(x, 3) = arr1(y, 2)
        arr2(x, 4) = arr1(y, 4)
       ElseIf arr1(y, 8) = "配偶" Then
        arr2(x, 5) = arr1(y, 2)
        arr2(x, 6) = arr1(y, 4)
       End If
     Else
       GoTo 100
     End If
   Next
100:
Else
   If arr1(x, 8) = "户主" Then
       For y = x + 1 To UBound(arr1)
          If arr1(y, 9) = arr1(x, 9) Then
            If arr1(y, 8) = "配偶" Then
             arr2(x, 1) = arr1(y, 2)
             arr2(x, 2) = arr1(y, 4)
             arr2(y, 1) = arr1(x, 2)
             arr2(y, 2) = arr1(x, 4)
            End If
          Else
            GoTo 200
          End If
       Next
  End If
200:
    If arr1(x, 8) = "配偶" Then
       For y = x + 1 To UBound(arr1)
          If arr1(y, 9) = arr1(x, 9) Then
            If arr1(y, 8) = "户主" Then
              arr2(x, 1) = arr1(y, 2)
              arr2(x, 2) = arr1(y, 4)
              arr2(y, 1) = arr1(x, 2)
              arr2(y, 2) = arr1(x, 4)
            End If
          Else
           GoTo 300
          End If
       Next
    End If
300:

End If
Next
[j2].Resize(UBound(arr1), 6) = arr2
Application.ScreenUpdating = True
MsgBox "OK", , "wayy"
End Sub

代码写了一个,应该可以。

[此贴子已经被作者于2010-9-7 14:23:45编辑过]
回复

使用道具 举报

 楼主| 发表于 2010-9-7 14:58 | 显示全部楼层

嗯。嗯。谢谢。。。终于解决了。感激。。。。最近正在抓紧学习。。书到用时方恨少啊。现在正在弄怎么根据出生日期生成18位身份证号码。而且第18位要符合检验。。。正在盲目地弄。有好办法吗??

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 03:59 , Processed in 0.219541 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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