繁体   English   中英

如果包含某个数字(前 4 位数字),如何将数字复制到另一列 - EXCEL VBA

[英]How to copy the number if contains certain number (first 4 digit) to another column - EXCEL VBA

我正在尝试搜索特定的列(E),如果与前 4 位数字匹配,我想将该数字复制到不同的列。

  • E列是我想粘贴所有随机数的地方(动态)
  • A/B/C 列是静态的,我会不时添加 4 位数字。
  • 列 I/J/K 是要粘贴结果的位置。

在此处输入图片说明

PS:我是手动完成的,如果有人可以帮助我解决自动化问题,我将不胜感激,因此没有提供代码。 :(

拥有 ExcelO365 意味着您可以使用FILTER() 因此请尝试以下操作:

在此处输入图片说明

I2公式:

=FILTER($E:$E,ISNUMBER(MATCH(--LEFT($E:$E,4),A:A,0)))

向右拖动到K2 现在,这是动态的,并且会随着E:E列中的数据输入或A:C值的变化而相应地改变。

这是要在工作表 1 上执行的代码,它遍历整个列 E 并通过计数公式验证是否在前三列中的每一列中,并分配在相应列中找到的值。

Sub macro()
Dim Static_Data As String
Dim Sht As Worksheet
Set Sht = ThisWorkbook.Sheets("Hoja1")
Active_row = 2
Do While Sht.Range("E" & Active_row).Value <> ""
    Static_Data = Sht.Range("E" & Active_row).Value
    For i = 1 To 3
        If Application.WorksheetFunction.CountIf(Sht.Columns(i), Mid(Static_Data, 1, 4)) > 0 Then
            Sht.Cells(Sht.Cells(Rows.Count, i + 8).End(xlUp).Row + 1, i + 8).Value = Static_Data
        End If
    Next i
Active_row = Active_row + 1
Loop
End Sub

对于不支持 FILTER 或作为替代方案的 Excel 版本,您可以为此使用标准公式。

如果您使用 FH 列作为辅助列(并且这些列可以隐藏),则 F2 中的公式将是:

=IF(NOT(ISERROR(VLOOKUP(VALUE(LEFT($E2,4)),A$2:A$100,1,FALSE)))=TRUE,$E2,"")

然后可以上下复制公式。 这将找到您的匹配项。

为了然后从数据中删除空白,您可以在 I2 中使用以下公式,然后再次上下复制。 根据您要添加的数字数量,您可能希望扩展顶部公式中的 A$2:A$100 和底部公式中的 F$2:F$100 的范围

=IFERROR(INDEX(F$2:F$100,AGGREGATE(15,6,(ROW(F$2:F$100)-ROW(F$2)+1)/(F$2:F$100<>""),ROWS( I$2:I2))),"")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM