excel中怎样让一列数据中与某个单元格有一个相同的数字的数提取出来?

-------A-------B-------
1 123
2 345
3 890 123
4 247 345
在A1:A3这个范围内找出与A4有一个相同数字的提取出来放在B列。要按从下到上。下面对齐,原来在A列中位置在下面的放在下面。原来在上面的放在上面。如:345是第一个符合要求的数放面最下面,123是第个符合要求的数放在345的上面。谢谢!

这个么,用宏可以么,比较简单

Sub t()
    Dim i, j, k, p
    Dim brr(), crr()
    Set dic = CreateObject("scripting.dictionary")
    i = Selection.Cells(1, 1).Row
    j = Selection.Cells(1, 1).Column
    k = Selection.Cells.Count
    arr = Selection
    ReDim brr(1 To UBound(arr, 1))
    ReDim crr(1 To UBound(arr, 1))
    p = 1
    For n = UBound(arr, 1) - 1 To 1 Step -1
        For m = 1 To Len(arr(UBound(arr, 1), 1))
            If InStr(arr(n, 1), Mid(arr(UBound(arr, 1), 1), m, 1)) <> 0 Then
                brr(p) = arr(n, 1)
                p = p + 1
                Exit For
            End If
        Next
    Next
    For m = 1 To UBound(arr, 1)
        crr(m) = brr(UBound(arr, 1) - m + 1)
    Next
    Selection.Offset(0, 1) = Application.Transpose(crr)
End Sub

选中区域,你这里选中A1:A4,然后运行宏就可以了。有什么问题请继续追问

追问

有两个问题,1是请你在代码中定个范围如A1:A4。不要去选中。2是单元格中第一个数字是0时,提出来后0不在了。

追答

把范围定死了不就没有适应性了么,这样你想排多少都可以啊,0的问题我待会看下,现在比较忙,稍等

追问

你定个可自己修改的范围啊。如你的代码中是A1:A4。我也可以改为A1:A100。

追答Sub t()
    Dim p
    Dim rng as range 
    Dim brr(), crr()
    Set rng = Range("A1:A10") '这里改范围 
    arr = rng 
    ReDim brr(1 To UBound(arr, 1))
    ReDim crr(1 To UBound(arr, 1))
    p = 1
    For n = UBound(arr, 1) - 1 To 1 Step -1
        For m = 1 To Len(arr(UBound(arr, 1), 1))
            If InStr(arr(n, 1), Mid(arr(UBound(arr, 1), 1), m, 1)) <> 0 Then
                brr(p) ="'" & arr(n, 1)
                p = p + 1
                Exit For
            End If
        Next
    Next
    For m = 1 To UBound(arr, 1)
        crr(m) = brr(UBound(arr, 1) - m + 1)
    Next
    rng.Offset(0, 1) = Application.Transpose(crr)
End Sub

 这样呢?

0不在的问题,是单元格格式照成的……excel自动会把0去掉

我强制转换成了文本型,你看下可以么。

追问

还有点问题:你在最后一个单元格输入277,另一个单元格输入072。结果072也提出来了。而072与277有两个相同的数字是不符合要求的。

追答

你的问题是有一个相同数字啊,不是只有一个啊……自己没说清楚。

Sub t()
    Dim p,t
    Dim rng as range 
    Dim brr(), crr()
    Set rng = Range("A1:A10") '这里改范围 
    arr = rng 
    ReDim brr(1 To UBound(arr, 1))
    ReDim crr(1 To UBound(arr, 1))
    p = 1
    For n = UBound(arr, 1) - 1 To 1 Step -1
        t=0
        For m = 1 To Len(arr(UBound(arr, 1), 1))
            If InStr(arr(n, 1), Mid(arr(UBound(arr, 1), 1), m, 1)) <> 0 Then
                t=t+1
            End If
            if t=1 then
                brr(p) ="'" & arr(n, 1)
                p = p + 1 
            end if  
        Next
    Next
    For m = 1 To UBound(arr, 1)
        crr(m) = brr(UBound(arr, 1) - m + 1)
    Next
    rng.Offset(0, 1) = Application.Transpose(crr)
End Sub

追问

运行时下标越界。

追答Sub t()
    Dim p,t
    Dim rng as range 
    Dim brr(), crr()
    Set rng = Range("A1:A10") '这里改范围 
    arr = rng 
    ReDim brr(1 To UBound(arr, 1))
    ReDim crr(1 To UBound(arr, 1))
    p = 1
    For n = UBound(arr, 1) - 1 To 1 Step -1
        t=0
        For m = 1 To Len(arr(UBound(arr, 1), 1))
            If InStr(arr(n, 1), Mid(arr(UBound(arr, 1), 1), m, 1)) <> 0 Then
                t=t+1
            End If
        Next
        if t=1 then
            brr(p) ="'" & arr(n, 1)
            p = p + 1 
        end if   
    Next
    For m = 1 To UBound(arr, 1)
        crr(m) = brr(UBound(arr, 1) - m + 1)
    Next
    rng.Offset(0, 1) = Application.Transpose(crr)
End Sub

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-12
B1公式:
=IF(4-SUM(--(MMULT(--ISNUMBER(FIND(MID(A$1:A$3,{1,2,3},1),A$4)),{1;1;1})=1))>=ROW(A1),"",INDEX(A$1:A$3,SMALL(IF(--(MMULT(--ISNUMBER(FIND(MID(A$1:A$3,{1,2,3},1),A$4)),{1;1;1})=1),{1;2;3},9^9),ROW(A1)-4+SUM(--(MMULT(--ISNUMBER(FIND(MID(A$1:A$3,{1,2,3},1),A$4)),{1;1;1})=1)))))
数组公式,按CTRL+SHIFT+回车,下拉。追问

我试了一下,A列数据加到6个以上公式就要不起了。范围 我改了。

追答

百度私信,联系。

追问

对不起了,我的百度私信打不开。

追答

A1到A20,比较A21,公式:
=IFERROR(INDEX(A$1:A$20,SMALL(IF(--(MMULT(--ISNUMBER(FIND(MID(A$1:A$20,{1,2,3},1),A$21)),{1;1;1})=1),ROW($1:$20),9^9),ROW(A1)-21+SUM(--(MMULT(--ISNUMBER(FIND(MID(A$1:A$20,{1,2,3},1),A$21)),{1;1;1})=1)))),"")

数组公式,按CTRL+SHIFT+回车,下拉。(我的424527870)

本回答被网友采纳
第2个回答  2014-11-12
给个简单易懂的非数组公式=IF(OR(ISNUMBER(FIND("2",$A1,1)),ISNUMBER(FIND("4",$A1,1)),ISNUMBER(FIND("4",$A1,1))),A1,“”),下拉

excel中怎样让一列数据中与某个单元格有一个相同的数字的数提取...
1).Row j = Selection.Cells(1, 1).Column k = Selection.Cells.Count arr = Selection ReDim brr(1 To UBound(arr, 1)) ReDim crr(1 To UBound(arr, 1))

怎么把一列数据重复的数据找出来
3、方法二 在B1单元格写入公式 =IF(COUNTIF(A:A,A1)1,重复,) 下拉填充公式 这样在B列中出现文字“重复”的A列数据就是重复的数据。如何在Excel表格中的一列数据中找出是否有重复的?1、打开需要查找重复项的excel表格。鼠标单击下图位置选中查重的数据列。点击工具栏中的“条件格式”选项。然后...

怎样在excel中同一列中查找相同内容的单元格,
第一种方法:点击“数据”--->“高亮重复项”,选择要查找的数据,重复的数据就全部高亮显示出来了 第二种方法:“开始”--->“条件格式”--->“突出显示单元格规则”--->“重复值”,将重复单元格标色后再打开数据--筛选,按颜色筛选。不带颜色是唯一值,带颜色的是重复值。

excel表格中同一列中重复出现的数据应怎样提取?
利用条件格式命令可实现。1、在电脑上用2007版excel软件打开目标文件,选中目标列。2、然后点击上方快捷栏中的“格式”选项。3、然后在格式菜单中,执行“条件格式-突出显示单元格规则-重复值”选项。4、然后为重复值设置突出颜色,进行确定。5、然后对红色突出的表格进行复制粘贴操作,即可提取重复数据。

使用EXCEL软件如何在一列数字中找到相同的数据
1,打开Excel文档,找到想要找到重复数据的那列数据,如下图所示。2,鼠标左键按住,选中这列数据,如下图所示。3,点击开始,如下图所示。4,鼠标向右找到点击条件格式,如下图所示。5,点击条件格式,弹出下面的对话框,点击突出显示单元格规则,如下图所见。6,点击突出显示单元格规则,弹出右侧对话...

Excel中如何在一列中只要查找与一个单元格中的文字一样的重复值?
如图,B1单元格输入公式=IF(A1=C$1,"与C1数据重复","")下拉。

EXCEL 如何查找某一列与某一列的相同值,并输出指定内容?
参考这个答案:在Sheet2的C1输入:=IF(SUMPRODUCT((Sheet1!A$1:A$100=A1)*(Sheet1!B$1:B$100=B1)),"相同","")向下拉填充即可。公式中数据区域根据实际修改。试了才知道行不行

如何在excel中,把两列中有重复的内容找出来?
2、Excel找出两列数据中相同数据的步骤公式1:=if(isna(MATCH(A1,B:B,0)),,A1)。公式2:=VLOOKUP(A1,B:B,1,FALSE)。方法3:打开如图表格。3、如下图两列数据首先在开始菜单下面选择条件格式。点击之后出现框框,选择第一个:突出显示单元格规则,然后再选择重复值。4、首先我们先打开...

如何统计Excel表格中相同数据的个数?
1、进入Excel页面后,单击需要编辑的单元格。2、首先在编辑栏中输入“=countif(”。3、接着直接选中需要统计的数据区域。4、随后编辑“=countif(C3:C18,7)”,其中7代表需要统计重复数目的字符。5、按下enter回车键即可。6、同理,在第二个编辑栏中输入“=countif(”。7、选中同样区域,再将其...

excel中怎样让一列数据中百位数字与某个单元格中的数十位数字相同的数...
你所有的数据都是3位的么?并且B列只需要和A5中的数据进行比对?如果是在C1输入以下公式并下拉直至出错即可。=INDEX($B$1:$B$4,SMALL(IF(MID($B$1:$B$4,1,1)=MID($A$5,2,1),ROW($1:$4),4^8),ROW(A1)))注:以上公式为数组公式,输入完后需要同时按下Ctrl+Shift+Enter结束输入...

相似回答