Excel精英培训网

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

[已解决]2342342342

[复制链接]
发表于 2021-12-14 13:15 | 显示全部楼层 |阅读模式
本帖最后由 蜀西 于 2022-2-21 16:08 编辑

23423423424



最佳答案
2021-12-14 19:39
  1. Sub test()
  2. Dim arrClm, i&, j&, k&, c&, n&
  3. arrClm = Array(1, 1, 1, 1, 3, 0, 0, 2, 0, 4)
  4. Sheets("CC").[a3:m30].ClearContents
  5. For j = 0 To 9
  6.   c = arrClm(j)
  7.   If c Then
  8.     n = Sheets("BB").Cells(2, j + 1)
  9.     For i = 3 To 30
  10.       For k = 1 To c
  11.         If Sheets("BB").Cells(i, j + k) <> "" And Sheets("BB").Cells(i, j + k) = n Then Exit For
  12.       Next k
  13.       If k < c + 1 Then Sheets("CC").Cells(i, j + 1).Resize(, c) = Sheets("AA").Cells(i, j + 1).Resize(, c).Value
  14.     Next i
  15.   End If
  16. Next j
  17. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2021-12-14 17:20 | 显示全部楼层
你这个简单,代码如下
解决问题请给最佳,如果没有解决请明确需求

Sub demo()
   Dim arr1, arr2, arr3, i As Integer, j As Integer
   arr1 = Sheet1.Range("a3:m30")
   arr2 = Sheet2.Range("a3:m30")
   arr3 = Sheet3.Range("a3:m30")

   Dim temp
   For j = 1 To UBound(arr1, 2)
       For i = 1 To UBound(arr1, 1)
            If Sheet2.Cells(2, j) = "" Then
                 If arr2(i, j) = temp Then
                        arr3(i, j) = arr1(i, j)
                 End If
            Else
                temp = Sheet2.Cells(2, j).Value
                If arr2(i, j) = temp Then
                    arr3(i, j) = arr1(i, j)
                End If
            End If
       Next i
   Next j
        Sheet3.Range("a3:m30").ClearContents
        Sheet3.Range("a3:m30") = arr3
End Sub

1639473609(1).jpg

AAA.rar

24.57 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2021-12-14 17:35 | 显示全部楼层
本帖最后由 蜀西 于 2022-2-22 15:43 编辑


无可奈何花落去
回复

使用道具 举报

 楼主| 发表于 2021-12-14 17:36 | 显示全部楼层
本帖最后由 蜀西 于 2022-2-22 15:43 编辑
454352534

gdffd


回复

使用道具 举报

 楼主| 发表于 2021-12-14 17:38 | 显示全部楼层
本帖最后由 蜀西 于 2022-2-22 15:43 编辑
4523435

dgfegdfgds
回复

使用道具 举报

发表于 2021-12-14 17:55 | 显示全部楼层
蜀西 发表于 2021-12-14 17:38
我在CC表中手动的数值就是想要的结果,达这个结果就OK

你手动输入的结果跟你文字描述的结果不一样吧。

比如下面这个截图,BB表里面的第9行这个值并没有等于上面那个7,所以按理说是不会输出结果,应该为空。


以上代码解决的问题就是:
    BB表里的第2行作为抬头的值,与下面3-30行的值比较,如果相等,那么就同样的坐标复制AA表里面的值到CC表里面
    BB表里面的B2为0也不会影响结果,因为你AA表里面同一位置本来就是空,所以CC表肯定也是不会有结果的

如果你不是要这种结果,还需要说明清楚,你那个手动写的是怎么来的
1639475442(1).jpg
回复

使用道具 举报

 楼主| 发表于 2021-12-14 18:00 | 显示全部楼层
本帖最后由 蜀西 于 2022-2-22 15:44 编辑

fghdfgfdg
回复

使用道具 举报

 楼主| 发表于 2021-12-14 18:02 | 显示全部楼层
本帖最后由 蜀西 于 2022-2-22 15:44 编辑

54353454324534523

回复

使用道具 举报

发表于 2021-12-14 18:03 | 显示全部楼层
蜀西 发表于 2021-12-14 18:00
要出结果,,第九行,bb 表j9:m9有一个等于7都要将AA表中j9:m9所有数值输出到CC表j9:m9

那就是说:
    BB表里面第3列的值,跟下面每一行发现有相同的值,就抓取AA表的值放到CC表。没毛病,改一下代码
回复

使用道具 举报

发表于 2021-12-14 18:28 | 显示全部楼层
下班了,明天再写一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 09:52 , Processed in 0.159766 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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