在列中查找并复制(多个)值

  • 我有一个简单的表格,我想通过A1:A10search列A的值。
  • 当它find一个值时,应该将它复制/粘贴到B列中对应的结束单元格中。 – 另外,search多个值(如“value1 value2 value3”)并将所有find的值复制到B中将会很好。

我的桌子

输出应该是:

在这里输入图像说明

而对于多个值:

在这里输入图像说明

编辑:

我不得不用德文来代替这个function,但是这对我不起作用。

在这里输入图像描述

  • 对于B2,我补充说: =GLÄTTEN(VERKETTEN(D2;" ";E2;" ";F2;" ";G2))
  • 对于C2,我加了: =GLÄTTEN(VERKETTEN(B2;" ";D2;" ";E2;" ";F2;" ";G2))

  • 对于C10,我补充说: =GLÄTTEN(LINKS(B10;FINDEN(" ";B10)))

  • 对于D10,我补充说: =GLÄTTEN(LINKS(B11;FINDEN(" ";B11)))
  • 对于E10我补充说: =GLÄTTEN(LINKS(B12;FINDEN(" ";B12)))
  • 对于F10,我加了: =GLÄTTEN(B13)

  • 对于B11我加了: =TEIL(B10;LÄNGE(C10)+2;99)

  • 对于B12,我加了: =TEIL(B11;LÄNGE(D10)+2;99)
  • 对于B13,我加了: =TEIL(B12;LÄNGE(E10)+2;99)

我从这里得到的翻译。

您可以在VBA中有效地做到这一点,如下所示

  • 按AltF11打开Visual Basic编辑器(VBE)。
  • 从菜单中select插入模块。
  • 将代码复制并粘贴到右侧的代码窗口中。
  • 按AltF11返回到Excel
  • Excel 2007及更高版本的“开发人员”选项卡运行macros,对于Excel 2003使用...Tools-Macro-Macros

在这里输入图像说明

 enter code here Sub QuickFInd() Dim X As Variant Dim Y As Variant Dim vWords As Variant Dim Vword As Variant Dim lngCnt As Long X = Range("A2:A8").Value2 ReDim Y(1 To UBound(X), 1 To 1) vWords = Split([b10].Value) For lngCnt = 1 To UBound(X) For Each Vword In vWords If InStr(X(lngCnt, 1), Vword) > 0 Then Y(lngCnt, 1) = Y(lngCnt, 1) & Vword & Chr(32) Next Vword Next [b2].Resize(UBound(Y), 1).Value2 = Y End Sub 

我用VBA代码解决了你的问题。 要使用它,请在Excel工作簿中创build一个VBA模块,并粘贴下面的代码。然后返回到您希望运行的工作表,然后单击“macros”并select“search”。

让我知道它是如何工作〜
例:
在这里输入图像说明

码:

 Public Sub search() 'Enter the location of your "Key Word" cell here (where you want the search values to come from) Dim KeyCell As String: KeyCell = "B11" 'Enter the range you would like to search here Dim searchRange As Range: Set searchRange = ActiveSheet.Range("A2", "A11") 'Enter the column you want to print to Dim printColumn As String: printColumn = "B" '##### the real program starts here #### 'create an array of values that we will search for Dim values() As String 'each item in the values array is separated by a space in the "Key Word" cell values = Split(CStr(ActiveSheet.Range(KeyCell).Value), " ") Dim dataCell As Object 'now we loop through each cell in the search range For Each dataCell In searchRange 'loop through each value in our array of values For Each v In values 'check to see if our value is in the cell we are searching If InStr(1, CStr(dataCell.Value), CStr(v), vbBinaryCompare) > 0 Then 'print With ActiveSheet.Range(printColumn & dataCell.Row) .Value = .Value & " " & CStr(v) End With End If Next v Next dataCell End Sub 

如果你只想要没有PASTE或VBA的search,你可以按照下面的scheme:

在这里输入图像说明

并添加公式:

 B2 -> =TRIM(CONCATENATE(D2;" ";E2;" ";F2;" ";G2)) C2 -> =IF(IFERROR(FIND(C$10;$A2)>0;"")=TRUE;C$10;"") and autocomplete C10 -> =TRIM(LEFT(B10;IFERROR(FIND(" ";B10);99))) CORRECT ! D10 -> =TRIM(LEFT(B11;IFERROR(FIND(" ";B11);99))) CORRECT ! E10 -> =TRIM(LEFT(B12;IFERROR(FIND(" ";B12);99))) CORRECT ! F10 -> =TRIM(B13) B11 -> =MID(B10;LEN(C10)+2;99) B12 -> =MID(B11;LEN(D10)+2;99) B13 -> =MID(B12;LEN(E10)+2;99) 

隐藏支持公式列。 你可以添加多less你想要的单词…可以添加其他的公式。
如果您需要添加这些值,您可以在A和B之间添加一列,然后复制并粘贴移动列“C”(Ex B)的值。 修改C2公式:

 =TRIM(CONCATENATE(B2;" ";D2;" ";E2;" ";F2;" ";G2)) and autocomplete... 

这个公式添加已经保存的密钥…(不重复检查)。
我有正确的公式…以前的工作只有4键…

你可以做这样的事情:

 =IF(IFERROR(FIND($B$10,A2,1),0)>0,$B$10&" ","")&IF(IFERROR(FIND($B$11,A2,1),0)>0,$B$11&" ","")&IF(IFERROR(FIND($B$12,A2,1),0)>0,$B$12&" ","") 

例

而只是自动填充所有的文本项目。