2013-04-29 164 views
0

我只有30,000多個tweets。我有一列有實際的tweet。我希望通過此專欄完成兩件事情。從任意長度的字符串中提取子字符串

首先這裏是採樣數據的一個片段:

RT @Just_Sports: Cool page for fans of early pro #baseball. https://t.co/QCMYFQNSq8 #mlb #vintage #Chicago #Detroit #Boston #Brooklyn #Phil… 
@brettjuliano you already know #unity #newengland #hiphop #boston #watertown #network 

我有一個使用下面的公式,以查看是否該消息開始時與RT意思是re-tweet一列。它返回1爲yes,0返回no。

我想完成的是在兩列中創建一個公式。如果RT列的值爲1,則會獲得用戶名,如果RT列的值爲0,則會在第二列中獲取用戶名。由於用戶名長度是任意的,因此我不確定如何處理此問題。

RT @Just_Sports:  |  1  |  @Just_Sports  |  0 
@brettjuliano  |  0  |      |  @brettjuliano 
+0

喜@Gaffi,我試圖通過= some_formula – 2013-04-29 19:00:59

+2

按'從Excel F1'做到這一點。檢查公式'Search'。如果RT'總是在開始時的'位置,那麼你也可以使用'LEFT' – 2013-04-29 19:04:04

+0

原諒我,我讀了「公式」爲「功能」。 :-) – Gaffi 2013-04-29 19:06:31

回答

1

看看Excel的FIND功能。您可以使用此標識@的位置,然後使用指定分隔,匹配用戶名的末尾:

=MID(A1, FIND("@",A1), FIND(":",A1,FIND("@",A1)) - FIND("@",A1)) 

哪裏A1是包含鳴叫的單元格,":"是您的分隔符。


您可以使用相同的功能來檢查"RT"標識符的存在。

=FIND("RT",A1)>0 

如果"RT"發現它返回TRUE。您可能要考慮" RT "(空格)進行搜索,或其他一些變化,因爲對於在鳴叫使用這個沒有標準:

=OR(FIND("RT",A1)>0,FIND(" RT",A1)>0,FIND("RT ",A1)>0, FIND(" RT ",A1)>0) 

,但誤報提防:ARTSTARTARTOO等...

此外,您"RT"可能會降低/上/混合的情況下,在這種情況下,你要的是標準化的搜索:

=OR(FIND("RT",UPPER(A1))>0,FIND(" RT",UPPER(A1))>0,FIND("RT ",UPPER(A1))>0, FIND(" RT ",UPPER(A1))>0) 

OR檢查是不同的比0/1檢查你說你已經有了,這樣你就可以僅僅指剛添加IF到要轉換爲0/1需要:

=IF(OR(FIND("RT",A1)>0,FIND(" RT",A1)>0,FIND("RT ",A1)>0, FIND(" RT ",A1)>0),1,0) 

一旦你知道你有RT檢查正確,你的第二列是正確填寫,您可以添加到我原來的公式:

案例爲第2列:

=IF(B1=1,MID(A1, FIND("@",A1), FIND(":",A1,FIND("@",A1)) - FIND("@",A1)),"") 

案例第2列:我不使用VBA

=IF(B1=0,MID(A1, FIND("@",A1), FIND(":",A1,FIND("@",A1)) - FIND("@",A1)),"")