Excel精英培训网

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

[已解决]求助:数据查找并引用及整行引用

[复制链接]
发表于 2012-10-16 14:42 | 显示全部楼层 |阅读模式
请问:

如下图所示,
  目的:根据“材料序号”和“品种名称”,在sheet1中查找,并将对应材料从“行数”至“生育日数”整行提取出来,放入对应的表格中。
  要求如下:
1、公式或VB程序最好能有应用说明;
2、公式可以向左、向下拉,或复制粘贴;
3、sheet1单元格的格式如数字、小数位数、文本、日期或字符串等在sheet2中显示时不变;
4、单元格sheet1中是空单元格时,在sheet2中仍显示为空单元格。
5、更高点的要求:原始表即sheet1中数据变动时,sheet2表中的数值可自行变动。

请问各位高手我该如何编制公式或VB程序?


表格.JPG

20121016 表格-田间数据整理-要求与结果.zip (23.81 KB, 下载次数: 101)
发表于 2012-10-16 17:32 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim mystr As String                                                     '定义字符串变量
    Dim i, j, d1, d2, d3 As Integer                                                '定义整形变量
    Dim arr
    Dim brr                                                                '定义数组
    d1 = Sheet1.Range("b65536").End(xlUp).Row                                   'sheet1 中b列最后一个非空单元格行号赋给 d
    d2 = Sheet2.Range("b65536").End(xlUp).Row
    d3 = Sheet3.Range("b65536").End(xlUp).Row
    For i = 2 To d2
        mystr = Sheet2.Cells(i, 2) & Sheet2.Cells(i, 3)                     '把sheet2中的序号及材料名连接在一起,赋给变量mystr
            For j = 2 To d1
                If Sheet1.Cells(j, 2) & Sheet1.Cells(j, 3) = mystr Then     '如果sheet1的序号及材料名连接一起与 mystr一致
                    arr = Sheet1.Range("d" & j).Resize(1, 21)               '在sheet1找到的J行,单元格Dj向下1,向右21区域给数组(从自身数起)
                    Sheet2.Range("d" & i).Resize(1, UBound(arr, 2)) = arr   '把数组arr写在sheet2相应的区域
                End If
            Next j
    Next i
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '给 sheet3表填写平均
    Sheet3.Range("a2").Resize(d3, 24).ClearContents                                 '清空 sheet3
    For m = 2 To d2
        If Sheet2.Range("b" & m) = "平均" Then
            brr = Sheet2.Range("a" & m).Resize(1, 24)
            d3 = Sheet3.Range("b65536").End(xlUp).Row + 1                   'sheet3 B列最后一个非空单元格行号+1
            Sheet3.Range("a" & d3).Resize(1, 24) = brr
        End If
    Next m
End Sub

20121016 表格-田间数据整理-要求与结果.rar

27.82 KB, 下载次数: 85

回复

使用道具 举报

 楼主| 发表于 2012-10-16 18:13 | 显示全部楼层
dpdmlym 发表于 2012-10-16 17:32
Sub test()
    Dim mystr As String                                                     '定义字符串变 ...

非常感谢您的帮助,真的很好用呀。解决了我的大问题,再次表示感谢!!!
另,还有一个问题请教。sheet2中是已经准备好了基础表格,如果不准备基础表格,有办法达到这样的效果吗?
回复

使用道具 举报

发表于 2012-10-16 21:50 | 显示全部楼层
shzzhy 发表于 2012-10-16 18:13
非常感谢您的帮助,真的很好用呀。解决了我的大问题,再次表示感谢!!!
另,还有一个问题请教。sheet2 ...

没明白你问的问题,你是不是说,只有sheet1表,要按sheet2.的格式输出,最简单的方法就是排序
操作方法对sheet1表进行排序:选中1到37行---菜单-------数据------排序--------首先选有标题行-------主关键字选材料名称,升序------次主关键字选材料序号,升序-----确定.得到你所要的 sheet2的结果了吧
回复

使用道具 举报

 楼主| 发表于 2012-10-17 21:59 | 显示全部楼层
是的,就是只有sheet1表时,要按sheet2.的格式输出。排序可以完成,但如何添加求平均值那行呀?再者,数据很多,就是想做成公式或VB,能减少工作量。
回复

使用道具 举报

发表于 2013-5-14 15:02 | 显示全部楼层

我想问一下这个问题怎么实现
如图为表1
我想在表2中的A1单元格输入数字   能查找出表1中A列对应数值的整行且显示到 表2中的第2行
在表2中还要能修改这行的数值 同时表1中的数值也要被修改


这个怎么做到啊·········
跪求高手指点{:091:}
1.jpg
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-28 06:52 , Processed in 0.285696 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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