Board logo

標題: [發問] 請問一下如何擷取A1儲存格中括號內的數值,並將之顯示在B1儲存格呢? [打印本頁]

作者: happycoccolin    時間: 2012-6-28 17:52     標題: 請問一下如何擷取A1儲存格中括號內的數值,並將之顯示在B1儲存格呢?

大家好~不好意思~:)

想請問一下如何擷取A1儲存格中括號內的數值,並將之顯示在B1儲存格呢?例如:ABC(1234)EFG->1234,但是每一格的內容不盡相同,也有可能是ABCDEF(5687)CDE->5678,所以沒有用LEFT() & RIGHT()做

唯一相同的是每一儲存格都有括號()一組

還有,目前需要比對大量儲存格資料,但是因為單一儲存格內可能會有多筆資料存在(A1,A2,A3...A50),有辦法跟儲存格中只有一個數值的做比對嗎

例如:sheet1裡的B1儲存格(內容包含:A01,A02,A03...A50數值),需要跟sheet2的B1儲存格(內容為A01)比對,若數值相同(都有A01)希望傳回Sheet1中的A1值在sheet2的C1中,請問有沒有辦法做到呢?

不知說的清不清楚~~也請各位高手撥冗看一下~~~感謝感謝~
作者: happycoccolin    時間: 2012-6-28 18:16

附上附件~FYR~
作者: Hsieh    時間: 2012-6-28 18:43

回復 2# happycoccolin
第一個問題
B1=MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1)
第二個問題就不懂你的目的為何了
Sheet1的B欄是多組字串,但又只比對一組文字,這樣說法有點模糊
請把實例附檔說明
作者: happycoccolin    時間: 2012-6-29 09:34

Hsieh老師,謝謝您的回覆~~
問題二我再詳述一次如下~~~也請幫忙看一下,因為我只會使用VLOOKUP比對,這樣一個欄位有多個值的實在想破頭了..謝謝~


Sheet1
A                                       B                   C
09-87654321        A1        12-34567890        Sheet1 B欄與Sheet2 B欄全部比對,若之中有相同的值,希望為傳Sheet2 A欄的值在Sheet1的C欄
09-87654322        G4        12-34567895       
09-87654323        D1               
09-87654324        C1        None                              <-Sheet2中無相符
09-87654325        D3        12-34567892

Sheet2
A                                       B
12-34567890        A1,A2,A3,A4,A5,A6,A7,A8,A9,A10
12-34567891        B1
12-34567892        C2,D3
12-34567893        F4
12-34567894        G1
12-34567895        G4,G5,G6
作者: happycoccolin    時間: 2012-7-2 17:20

哈囉~想請教一下這樣的比較方式EXCEL可以做到嗎?不知道有沒有人知道呢?謝謝~~~~~
作者: Hsieh    時間: 2012-7-2 18:10

回復 5# happycoccolin


    [attach]11559[/attach]
作者: happycoccolin    時間: 2012-7-5 09:59

哇!!真是太感恩了!!謝謝老師的教學~
作者: jackson7015    時間: 2012-7-18 08:17

藉此主題問題
若是將問題一的文字擷取,變更為只擷取ABC-DEF-ABCDEF後面-號紅色字體的部分
請問函數要如何更正
套用Hsieh版大的公式後,會出現ABCDE的擷取資料

問題中的-號,會不定數量2~3個,但都是只需要擷取最後-號的後面的ABCDEF部分而已
作者: Hsieh    時間: 2012-7-18 08:37

回復 8# jackson7015


    =MID(SUBSTITUTE(A1,"-",";",LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))),FIND(";",SUBSTITUTE(A1,"-",";",LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))+1,255)
作者: jackson7015    時間: 2012-7-18 08:53

回復 9# Hsieh

感謝Hsieh板大
函式可正常運作;
若要改成顯示ABC-DEF-ABCDEF,後面紅色字體部分;最後的一個位元(或字體)不擷取
公式要變更哪個地方呢?
作者: Hsieh    時間: 2012-7-18 14:07

回復 10# jackson7015

好像是在考試唷
=LEFT(MID(SUBSTITUTE(A1,"-",";",LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))),FIND(";",SUBSTITUTE(A1,"-",";",LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))+1,255),LEN(A1)-(FIND(";",SUBSTITUTE(A1,"-",";",LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))+1))
作者: jackson7015    時間: 2012-7-19 08:24

抱歉,一直麻煩Hsieh 版大
因為想要了解,這種類似問題的相關不同排列擷取,所以才問了相似的問題
目前三種都可正常執行運用
感謝Hsieh 版大的熱心幫忙
作者: Hsieh    時間: 2012-7-19 09:04

回復 12# jackson7015
這種類似問題,其實都可以自己思考,你會發現這個問題中所用的函數不就是MID函數中,擷取長度的變化
最初的技巧只有SUBSTITUTE來將最後一個分隔符號用特定字元取代,得以判斷所需擷取的片段
接下來的變形都是MID或LEFT或RIGHT來擷取部分字串
應該徹底了解整個公式的意義才能加以運用。
作者: jackson7015    時間: 2012-7-19 16:27

感謝Hsieh版大的指導
小弟的函數運用還在起步學習階段,相同函數多要參考多種相似運用來慢慢解析
會慢慢改進學習態度;感激Hsieh版大不吝指教
作者: happycoccolin    時間: 2012-9-5 18:22

回復 6# Hsieh


Hsieh 大大請教一下~
目前我使用上遇到一個問題,利用B欄來做比對,但是若比對到例如字元為:IR10000 & R10000,會出現混淆的現象~只會抓到IR10000的值,請問要怎麼改呢?謝謝!!

Sheet1
A                                       B                   C
09-87654321        IR10000        12-34567890        
09-87654322        R10000          12-34567890 (應該要抓到12-34567891)        
09-87654323        D1               

Sheet2
A                                       B
12-34567890        R10000,R10001
12-34567891        IR10000
12-34567892        C2,D3
作者: Hsieh    時間: 2012-9-5 22:23

回復 15# happycoccolin

模糊比對無法達成那就用自定義函數試試

   [attach]12385[/attach]
  1. Function Dictionary(key As Range, item As Range, crt As String)
  2. Set d = CreateObject("Scripting.Dictionary")
  3. For i = 1 To key.Count
  4.   For Each a In Split(key(i), ",")
  5.     d(CStr(a)) = item(i).Value
  6.   Next
  7. Next
  8. Dictionary = d(CStr(crt))
  9. End Function
複製代碼

作者: happycoccolin    時間: 2012-9-6 10:24

回復 16# Hsieh


HSIEN大大我試過了謝謝您!!謝謝!

只是VBA完全不熟,還蠻想搞清楚來龍去脈的~@@

是要多花點時間研讀了
作者: ddrreate    時間: 2013-8-1 15:20

回復  happycoccolin
Hsieh 發表於 2012-7-2 18:10



請問這種模糊比對要如何用VBA寫出來
我的問題其實用這個函數能解決, 不過我還是想知道VBA要怎麼寫
作者: mhl9mhl9    時間: 2013-8-5 18:11

B1=MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1)
C5=IF(FIND(B5,Sheet2!B1)>0,Sheet2!A1,"")
作者: shuwen0219    時間: 2015-9-18 12:35

本帖最後由 shuwen0219 於 2015-9-18 12:38 編輯

{1187632393755295}
[T200P1275298438942244]       
請問同一欄�堛爾禤あ陶o兩種,我要取出中間的數值的要怎麼做?
由後算取16碼數字.
作者: hcm19522    時間: 2015-9-21 16:48

回復 8# jackson7015
http://blog.xuite.net/hcm19522/twblog/344440654
作者: shuwen0219    時間: 2015-9-27 23:19

訂單號要從商品訂單號或備註取出,位置的判斷應該是跟業務類型有關,
而且實際取出的資料也發現有文字有數字,即使肉眼判斷單號是一致的,
但是碼數實際有15-18碼.
己經打算請軟體公司直接客制報表了,不過還是很想知道這種的資料要怎麼處理比較好.
作者: tku0216    時間: 2015-10-6 23:13

回復 1# happycoccolin

供參考:
第一個問題其實可以使用資料剖析,先做一次"(",再做一次")"就可以完成,不需要用函數。
作者: hcm19522    時間: 2015-10-7 09:58

http://blog.xuite.net/hcm19522/twblog/347023385
作者: hcm19522    時間: 2015-10-7 10:14

http://blog.xuite.net/hcm19522/twblog/344440654
http://blog.xuite.net/hcm19522/twblog/347023385
作者: hcm19522    時間: 2015-10-7 10:28

http://blog.xuite.net/hcm19522/twblog/344440654




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)