簡體   English   中英

連續查找字符串並在Excel中將其刪除

[英]Finding a string in a row and removing it in excel

我有一張類似於下面的表格

si  id  a   b   c   d   e
1   123 abc bcd abc def efg
2   234 bcd cde def efg fgh
3   345 cde efg efg abc ghi

我想做的是查找字符串“ abc”是否存在於行中,如果存在,請將其刪除,然后將后續列復制到其位置,即第一行“ abc”存在於列A中,所以我要刪除並將col BE移至Col AD​​。 在第二行中不存在“ abc”,因此應按原樣保留該行,但在第三行中,“ abc”在Col D中,因此應將其刪除,並將“ ghi”粘貼到其位置,從而保留列E空。

我能夠使用MATCH做到這一點,但這里的問題是MATCH僅找到第一個出現的事件,而沒有找到后續出現的事件。

有沒有一種方法可以使用excel公式而不是vba。

您無法使用公式(在注釋中提及)就地退出數據-但是,如果您想要自動刪除項目的數據副本,則只要修改原始表就可以更新該表。 我會將結果數據粘貼在輸入數據下方,但是如果您願意,可以將其粘貼在另一張紙上。

我們從這個開始:

   |   A   |   B   |   C   |   D   |   E   |   F   |   G   |
---+-------+-------+-------+-------+-------+-------+-------+--
 1 |    si      id       a       b       c       d       e
 2 |     1     123     abc     bcd     abc     def     efg
 3 |     2     234     bcd     cde     def     efg     fgh
 4 |     3     345     cde     efg     efg     abc     ghi
 5 |
 6 |
 7 |
 8 |
 9 |
10 |

步驟1:在A6中放入=A1

步驟2:將A6復制到B6:G6,A7:A10和B7:B10

現在工作表如下所示:

   |   A   |   B   |   C   |   D   |   E   |   F   |   G   |
---+-------+-------+-------+-------+-------+-------+-------+--
 1 |    si      id       a       b       c       d       e
 2 |     1     123     abc     bcd     abc     def     efg
 3 |     2     234     bcd     cde     def     efg     fgh
 4 |     3     345     cde     efg     efg     abc     ghi
 5 |
 6 |    si      id       a       b       c       d       e
 7 |     1     123
 8 |     2     234
 9 |     3     345
10 |

步驟3:在C7中輸入以下數組公式(請記住按Alt-Shift-Enter而不是僅按Enter):

=IFERROR(INDEX($C2:$G2,1,SMALL(IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2),COLUMN(A1))),"")

步驟4:將C7復制到D7:G7和C8:G9

現在工作表如下所示:

   |   A   |   B   |   C   |   D   |   E   |   F   |   G   |
---+-------+-------+-------+-------+-------+-------+-------+--
 1 |    si      id       a       b       c       d       e
 2 |     1     123     abc     bcd     abc     def     efg
 3 |     2     234     bcd     cde     def     efg     fgh
 4 |     3     345     cde     efg     efg     abc     ghi
 5 |
 6 |    si      id       a       b       c       d       e
 7 |     1     123     bcd     def     efg
 8 |     2     234     bcd     cde     def     efg     fgh
 9 |     3     345     cde     efg     efg     ghi
10 |

這個怎么運作:

=IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2)生成一個值數組,該數組的數值為非abc的值,而數值為FALSE的值為abc。 -2很重要,因為數據左側有兩個標題列。

=SMALL(IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2),COLUMN(A1))返回返回數組中的第n個最小數字-跳過所有FALSE價值觀。

=INDEX($C2:$G2,1,SMALL(IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2),COLUMN(A1)))返回該值的位置第n個Smallestst數字-如果由於過濾出的項目而沒有值,則返回錯誤

=IFERROR(INDEX($C2:$G2,1,SMALL(IF($C2:$G2<>"abc",COLUMN($C2:$G2)-2),COLUMN(A1))),"")返回值並將錯誤替換為空單元格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM