Excel lấy ký tự thứ 3

Thông thường, chúng tôi xử lý dữ liệu trong đó các số nằm trong văn bản và chúng tôi cần trích xuất chúng. Sáng nay tôi có nhiệm vụ như vậy. Như bạn đã biết, gần đây chúng tôi đã thực hiện một cuộc khảo sát hỏi mức lương bạn kiếm được. Chúng tôi đã có 1800 phản hồi cho đến nay. Mình lấy số liệu ra excel để phân tích. Và bất ngờ. những con số là một mớ hỗn độn. Đây là một mẫu dữ liệu

Excel lấy ký tự thứ 3
Excel lấy ký tự thứ 3

Bây giờ, làm cách nào để trích xuất số tiền lương từ đây mà không cần nhập các giá trị?

Suy nghĩ đầu tiên của tôi là viết một hàm do người dùng xác định để trích xuất số từ văn bản. Nhưng tôi thường né tránh VBA. Vì vậy, tôi muốn xem liệu có cách tiếp cận dựa trên công thức nào để trích xuất số từ văn bản không

Sử dụng công thức để trích xuất số từ văn bản

Excel lấy ký tự thứ 3
Excel lấy ký tự thứ 3

Để trích xuất số từ một văn bản, chúng ta cần biết 2 điều

  1. Vị trí bắt đầu của số trong văn bản
  2. Chiều dài của số

Ví dụ: trong văn bản US $ 31330. 00 số bắt đầu từ chữ cái thứ 6 và có độ dài là 8.

Vì vậy, nếu chúng ta có thể viết công thức để lấy 1 & 2, thì chúng ta có thể kết hợp chúng trong công thức MID để trích xuất số từ văn bản

Tìm vị trí bắt đầu của số trong văn bản

Để tìm vị trí bắt đầu, chúng ta cần tìm ký tự đầu tiên là một số (0 đến 9). Nói cách khác, nếu chúng ta có thể tìm thấy các vị trí từ 0 đến 9 bên trong văn bản đã cho, thì vị trí tối thiểu của tất cả các vị trí đó sẽ là vị trí bắt đầu

Có vẻ phức tạp?. ?

Giả sử văn bản ở dạng A1 và phạm vi lstNumbers chứa từ 0 đến 9, công thức bên dưới tìm vị trí bắt đầu

{=MIN(IFERROR(FIND(lstNumbers,A1),””))}

Bạn cần nhập mảng đó (CTRL+SHIFT+Enter)

Làm thế nào công thức này hoạt động?

Phần TÌM (lstNumbers, A1). Phần này tìm vị trí của mỗi số từ 0 đến 9 trong văn bản ở A1. Nếu tìm thấy một trận đấu, vị trí được trả lại. Khác chúng tôi nhận được một lỗi. Cho HOA KỲ $31330. 00 các giá trị sẽ là,

{10;7;#VALUE. ;6;#VALUE. ;#GIÁ TRỊ. ;#GIÁ TRỊ. ;#GIÁ TRỊ. ;#GIÁ TRỊ. ;#GIÁ TRỊ. }

Có nghĩa là, 0 xảy ra ở vị trí thứ 10, 1 xảy ra ở vị trí thứ 7, 3 xảy ra ở vị trí thứ 6 và mọi thứ khác (2,4,5,6,7,8,9) không xảy ra trong số

IFERROR(…,””) phần. Sau đó, chúng tôi thay thế các lỗi bằng khoảng trống để MIN có thể phát huy tác dụng kỳ diệu của nó

Ở giai đoạn này, kết quả sẽ là, {10;7;””;6;””;””;””;””;””;””}

Có liên quan. Công thức IFERROR – cú pháp & ví dụ

{=MIN(…)} phần. Điều này sẽ tìm thấy giá trị nhỏ nhất của {10;7;””;6;””;””;””;””;””;””} là 6. Vị trí bắt đầu của số trong văn bản

Vì tìm nhiều mục nên cần nhập công thức mảng để có kết quả chính xác

Tìm độ dài của số

Khi chúng tôi tìm thấy điểm bắt đầu, tiếp theo chúng tôi cần biết độ dài của số. Có rất nhiều cách để làm điều này. Tùy thuộc vào sự đa dạng trong dữ liệu đầu vào của bạn, bạn có thể chọn một kỹ thuật hoạt động tốt nhất

Cách tiếp cận 1 – đếm số chữ số trong văn bản

Cách tiếp cận đầu tiên của tôi là đếm số chữ số trong văn bản và sử dụng nó làm độ dài. Đối với điều này, chúng ta có thể chia văn bản thành các ký tự riêng lẻ và sau đó xem liệu mỗi ký tự đó có phải là một số hay không

Giả sử văn bản ở trong A1, số chữ số trong đó là,

=SUMPRODUCT(- -ISNUMBER(MID(A1,ROW($A$1. $A$200),1)+0))

MID(A1,ROW($A$1. $A$200),1) + 0 phần. Thao tác này chia văn bản trong A1 thành các ký tự riêng lẻ (giả sử độ dài tối đa là 200) rồi thêm 0 vào chúng

Ở giai đoạn này, bạn có 200 giá trị, một số là số, một số khác là lỗi

ISNUMBER(…) phần. Điều này kiểm tra tất cả 200 giá trị cho các số. Sau này, chúng ta sẽ có 200 giá trị true hoặc false

— ISNUMBER (…) phần. Điều này chuyển đổi các giá trị đúng, sai thành 0 và 1. (bằng cách phủ định hai lần, Excel sẽ chuyển đổi giá trị boolean thành số tương đương)

phần TÓM TẮT(…). Điều này cuối cùng tổng hợp tất cả các số 1, do đó cho chúng ta số chữ số trong văn bản

Nó có hoạt động không?

Mặc dù phương pháp này hoạt động tốt đối với một số con số, nhưng nó không thành công trong các trường hợp khác. Ví dụ: một văn bản như US $ 31330. 00 có phần số gồm 8 ký tự (31330. 00) trong đó công thức của chúng ta sẽ cho biết độ dài là 7 (vì dấu thập phân. không phải là một số và do đó ISNUMBER() sẽ trả về giá trị sai cho điều đó)

Vì vậy, tôi đã phải chuyển sang cách tiếp cận tiếp theo

Cách tiếp cận 2 – đếm số chữ số, dấu phẩy và dấu thập phân trong văn bản

Cách tiếp theo là đếm không chỉ các số mà còn cả dấu phẩy & dấu thập phân trong văn bản. Đối với điều này, đầu tiên tôi đặt tất cả các chữ số (0 đến 9) và dấu phẩy & dấu thập phân trong một phạm vi được gọi là lstDigits

Công thức dưới đây đếm có bao nhiêu lstDigits trong văn bản trong A1

=SUMPRODUCT(COUNTIF(lstDigits,MID(A1,ROW($A$1. $A$200),1)))

Phần COUNTIF(lstDigits, MID(…)). Điều này kiểm tra xem mỗi ký tự trong số 200 ký tự xuất hiện bao nhiêu lần trong lstDigits

Đây sẽ là một mảng đếm. Ví dụ: {0;0;0;0;0;1;1;1;1;1;1;1;1;…} với giá 31330 đô la Mỹ. 00, chỉ ra rằng 5 số đầu tiên không có trong lstDigits và sau đó chúng tôi có 8 trong lstDigits

phần TÓM TẮT(…). chỉ tính tổng tất cả các số, do đó chúng ta có độ dài là 8

Có liên quan. Công thức TÓM TẮT – ví dụ & giải thích

Excel lấy ký tự thứ 3
Excel lấy ký tự thứ 3

Trích xuất số từ văn bản

Khi chúng tôi có vị trí bắt đầu của số & độ dài của nó, chúng tôi có thể kết hợp chúng trong công thức MID để trích xuất số. Đây là kết quả cho tập dữ liệu mẫu của chúng tôi

Như bạn có thể thấy, phương pháp này hoạt động tốt, nhưng không thành công trong một số trường hợp như,

  • Định dạng số châu Âu (, cho dấu thập phân và. hàng ngàn)
  • Văn bản có nhiều số

May mắn thay, trong bộ dữ liệu của tôi, chúng tôi chỉ gặp một vài sự cố như thế này. Vì vậy, tôi đã quyết định điều chỉnh chúng theo cách thủ công hơn là tìm ra công thức thậm chí còn phức tạp hơn

Sử dụng Macro để trích xuất số từ văn bản

Như bạn có thể đoán, chúng ta có thể sử dụng một macro đơn giản (hoặc UDF) để trích xuất các số từ một văn bản nhất định. Chúng ta sẽ học cách làm điều này vào tuần tới

Tải xuống Sổ làm việc Ví dụ

Nhấp vào đây để tải xuống bảng tính ví dụ với tất cả các công thức này. Kiểm tra các công thức để hiểu cách bạn có thể trích xuất các số từ văn bản trong Excel

How do you Extract numbers from Text?

Often I deal with data like this. Tôi sử dụng kết hợp các kỹ thuật. Ngoài cái được đề cập ở trên, tôi cũng sử dụng,

  • getNumber() UDF to extract numbers from text (more on this next week)
  • Use SUBSTITUTE to clear formatting (replace dots with empty spaces and commas with dots to convert from European format to standard format)
  • Use VALUE to extract the number (works when number is shown as text)
  • Use +0 to force convert numbers from text (works when number is shown as text)

What about you? How do you extract numbers from text? What are your favorite techniques? Please share using comments

Tips on cleaning data using Excel

If you use Excel to clean data, go thru these articles to learn some powerful techniques

  • Dọn dẹp ngày tháng và chuyển đổi văn bản thành ngày tháng
  • Remove Duplicates using Excel using formulas or using Excel features
  • Extract phone numbers from data
  • Quickly fill blank cells with data

Facebook

Twitter

LinkedIn

Share this tip with your colleagues

Excel lấy ký tự thứ 3

Get FREE Excel + Power BI Tips

Simple, fun and useful emails, once per week

Learn & be awesome

  • Tagged under advanced excel, array formulas, cleanup data, downloads, Excel Howtos, find, iferror, Learn Excel, Microsoft Excel Formulas, MIN(), sumproduct
  • Category. Excel Howtos

PrevPreviousUse MAX to find latest date in a list [Quick tip]

NextJoin our Financial Modeling Class before fee hike [Quick update]Next

Excel lấy ký tự thứ 3

Welcome to Chandoo. org

Thank you so much for visiting. My aim is to make you awesome in Excel & Power BI. I do this by sharing videos, tips, examples and downloads on this website. There are more than 1,000 pages with all things Excel, Power BI, Dashboards & VBA here. Go ahead and spend few minutes to be AWESOME

Read my story • FREE Excel tips book

Excel lấy ký tự thứ 3

Excel lấy ký tự thứ 3

Want an AWESOME
Excel Class?

Excel lấy ký tự thứ 3

Excel School made me great at work

 5/5

– Brenda

FREE Goodies for you

Excel lấy ký tự thứ 3

Danh sách 100 công thức Excel

Từ đơn giản đến phức tạp, có một công thức cho mọi dịp. Kiểm tra danh sách ngay bây giờ

Excel lấy ký tự thứ 3

20 mẫu Excel

Lịch, hóa đơn, trình theo dõi và nhiều hơn nữa. Tất cả miễn phí, vui vẻ và tuyệt vời

Excel lấy ký tự thứ 3

13 kỹ năng Pivot Table nâng cao

Power Query, Mô hình dữ liệu, DAX, Bộ lọc, Bộ cắt, Định dạng có điều kiện và biểu đồ đẹp. Tất cả đều ở đây

Excel lấy ký tự thứ 3

Bắt đầu với Power BI

Vẫn còn băn khoăn về Power BI?

Các bài viết gần đây về Chandoo. tổ chức

Excel lấy ký tự thứ 3

Excel Mandelbrot

Bài đăng này kiểm tra việc triển khai Hàm Mandelbrot trong Excel mà không cần sử dụng mã VBA. Nó khám phá cách điều này được thực hiện bằng cách sử dụng Số thực và Số phức

Excel lấy ký tự thứ 3

Mẫu Excel Lịch & Planner MIỄN PHÍ cho năm 2023

Excel lấy ký tự thứ 3

Merry Christmas & Happy New Year 2023

Excel lấy ký tự thứ 3

Range Lookup in Excel – How to lookup the pricing tier? [Formulas]

Excel lấy ký tự thứ 3

#### in Excel cell

Best of the lot

  • Excel for beginners
  • Advanced Excel Skills
  • Excel Dashboards
  • Complete guide to Pivot Tables
  • Top 10 Excel Formulas
  • Excel Shortcuts
  • #Awesome Budget vs. Actual Chart
  • 40+ VBA Examples

Excel lấy ký tự thứ 3

Excel Challenges

Can you split “The Hangover” expenses? [Excel Homework]

Excel lấy ký tự thứ 3

Excel Howtos

How to write complex Excel formulas (hint. it’s a lot like LEGO)

Excel lấy ký tự thứ 3

Excel Howtos

Sorting values in Olympic Medal Table style [Quick Tip]

Excel lấy ký tự thứ 3

Excel Howtos

How to use Date & Time values in Excel – 10 + 3 tips

Excel lấy ký tự thứ 3

Excel Howtos

What is XLOOKUP? 13 formula examples to really understand it

Excel lấy ký tự thứ 3

Excel Howtos

Two-level Data Validation [Excel Trick]

65 Responses to “Extracting numbers from text in excel [Case study]”

  1. Gregor Erbach says.

    I have learned one important lesson in my career. don't use Excel as a word processor
    Excel is very ill-suited to handling tasks like pattern matching in text (regular expressions)
    For example, one could use a Perl script (from the CMD command line) to extract numbers from the text, something like
     
    perl -n -e "m/([\d\,\. ]*)/; print "$1\n" IN > OUT
     
    The point I am trying to make is, if text processing is a substantial part of your tasks, it is worth the effort learning a tool that is more suited to the task
     

    • Hui. says.

      I agree with what your saying about suitability of tools to task,

      but seriously perl -n -e “m/([\d\,\. ]*)/; print “$1\n” IN > OUT

      Doesn't just roll off your tongue 

      and very few PC's would even have Perl installed

    • Chandoo says.

      Interesting point. I would have used VBA or some variation of that to clean data. But as Hui says Perl is not something many (including me) have on our computers. Plus I suck at regular expressions. I have tried long and hard to learn them, but I guess my mind is not wired to understand how they work 🙁

    • Jim nói.

      The VBA engine for regular expressions works fine in Excel and Access. I agree if you are doing a substantial amount of text cleaning then doing so exclusively in Excel is probably not the best course, but using regular expressions in Perl or any other flavor doesn't really provide any advantage over using regex in Excel. At the end of the day, regex is regex (with the exception of minor syntactic differences)

      Chandoo, a lot of people are intimidated by regex just like people are intimidated by formulas or macros. Once you learn a handful of rules and concepts, you can really do some damage with regex, and not just for data cleaning. You can validate input, parse,  transform (e. g. firstname lastname --> lastname, firstname), etc. Once you pick it up you'll see many opportunities where it's useful and sometimes superior to another approach (and sometimes not).  My brain is not wired to understand multiple nested formulas or complicated array formulas so I guess regex is just easier to me. I would add that the regular expression approach not only cleans this data, but is flexible enough to account for other variations. try it on the other records you have and see how well it performs. Either way, it's great to know there are multiple approaches to solving the problem

  2. Bhavani Seetal Lal says.

    How to sign inn into chandoo. org???

  3. Vijay Kumar says.

    Dear Chandoo
    Awesome, you are such a genius, how can you think like "what the excel will think"? Such ideas implementation. Very great . But lastly, i just wanted to know that in your formula =SUMPRODUCT(COUNTIF(lstDigits,MID(B4,ROW($A$1. $A$200),1))), why we can't use 1 on behalf of ROW($A$1. $A$200), obviously if we will input this formula somewhere in excel, it results 1. So what is the logic to use row function instead of simple 1
    Please explain, i am eager to learn the logic of inputting or building a formulas. Can you suggest me the source like web url or books to build better formulas in our excel work
     

    • Luke M says.

      Within SUMPRODUCT, that bit of formula is actually producing an array of numbers from 1 to 200, eg
      {1,2,3,4,. 200}
      To see this in the formula, highlight that portion within the SUMPRODUCT and hit F9.  

  4. Hui. says.

    In the first example above, I would store lstNumbers as a Named Formula

    lstNumbers ={0;1;2;3;4;5;6;7;8;9}

  5. Cliff Beacham says.

    I do not know why you would not want to use a UDF - Here is the code for one I wrote that extracts Numbers, Letters, Commas and spaces to clean up data  - amend as you wish for ANY ASCII characters
    Function NumbersAndLettersOnly(instring) As String
    Dim StringLength As Integer ‘to hold string length
    Dim i As Integer ‘counter for loop
    Dim AsciiVal ‘to hold working character
    Dim WorkingString As String ‘to build output string
    instring = Trim(instring) ‘Drop leading & trailing spaces
    StringLength = Len(instring) ‘Count number of characters in string
    For i = 1 To StringLength ‘Loop thru each character in the string
    AsciiVal = Asc(Mid(instring, i, 1))
    Nếu AsciiVal >= 48 Và AsciiVal <= 57 Thì 'Số 0-9
    WorkingString = WorkingString & Chr(AsciiVal)
    ElseIf AsciiVal >= 65 Và AsciiVal <= 90 Then 'A-Z
    WorkingString = WorkingString & Chr(AsciiVal)
    ElseIf AsciiVal >= 97 Và AsciiVal <= 122 Then 'a-z
    WorkingString = WorkingString & Chr(AsciiVal)
    KhácNếu AsciiVal = 46 Thì '
    WorkingString = WorkingString & Chr(AsciiVal)
    ElseIf AsciiVal = 32 Then '{dấu cách}
    WorkingString = WorkingString & Chr(AsciiVal)
    kết thúc nếu
    tiếp theo tôi
    NumbersAndLettersOnly = WorkingString 'Trả lại đầu ra cho chức năng
    chức năng kết thúc

    • Rick Rothstein (MVP - Excel) nói.

      @Vách đá,

      In case you might be interested, here is a shorter UDF which does the same thing as the one you posted

      [code]
      Function AlphaNumerics(ByVal InString) As String
        Dim X As Integer
        For X = 1 To Len(InString)
          If Mid(InString, X, 1) Like "[. A-Za-z0-9. ]" Then Mid(InString, X, 1) = Chr$(1)
        Next
        AlphaNumerics = Replace(InString, Chr$(1), "")
      chức năng kết thúc
      [/code]

      • Kevin says.

        I used this one, because it was the smallest but most readable (to me)

        Các trích dẫn không dịch chính xác sang VBA khi tôi cắt và dán, vì vậy tôi chỉ cần xóa chúng và nhập lại. Ngoài ra, chức năng này làm ngược lại. nó tìm các ký tự tìm kiếm trong tập hợp dấu ngoặc kép đầu tiên, sau đó thay thế một ký tự rỗng. Trong trường hợp của tôi, tôi muốn điều ngược lại, vì vậy tôi chỉ thêm KHÔNG vào trước Mid. Cảm ơn Rick. 🙂

  6. Francis Hayes nói.

    Chào Purn,
     
    Tôi đã có một yêu cầu tương tự vào đầu tuần này. Đây là giải pháp 'nhanh và bẩn' IS đã sử dụng. Hãy nhớ rằng, nếu có nhiều ký tự và văn bản khác nhau mà bạn cần xóa khỏi văn bản của mình, việc này có thể hơi rườm rà. Nhưng để xóa một vài chuỗi văn bản và ký tự khác nhau khỏi cùng một ô, điều này khá đơn giản để hiểu
     

    Sử dụng ví dụ của bạn, để xóa ký tự khoảng trắng, INR và R, tôi sẽ sử dụng công thức này
     

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B4," ",""),"INR",""),"Rs","")
     

    Bạn bắt đầu bằng =SUBSTITUTE(B4," ","") rồi bọc nó trong một SUBSTITUTE  khác cho mỗi chuỗi văn bản bạn muốn xóa

  7. Elias nói.

    Thêm một tùy chọn hoạt động với tất cả các phiên bản Excel

    =1*
    GIỮA(A1,
    TỐI THIỂU(TÌM({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),
    TÌM(" ",A1&" ",MIN(TÌM({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")))
    )

    Xác nhận bằng Ctrl+Shift+Enter

    Trân trọng

  8. Elias nói.

    Khác hơn với cách tiếp cận khác nhau

    =1*
    GIỮA(A1,
    MATCH(1,1*ISNUMBER(1*MID(A1,ROW($1). $255),1)),0),
    MATCH(10,1*MID(A1,ROW($1). $255),1))
    )

    Ctrl+Shift+Enter

    Trân trọng

    • Isaac nói.

      Bạn vừa cứu tôi khỏi bỏ cuộc haha. Tôi đã thử nhiều công thức không hoạt động, công thức này đã làm điều đó. Cảm ơn rât nhiều

      • Hui. says.

        @Isaac

        Khong bao gio bo cuoc
        Chandoo. org Diễn đàn là một nguồn tuyệt vời để đặt câu hỏi "Làm thế nào để tôi. " câu hỏi và nhận được một kết quả thực sự nhanh chóng
        http. //chandoo. tổ chức/diễn đàn/

  9. Rick Rothstein (MVP - Excel) nói.

    Được rồi, một phương pháp nữa. Sau đây đã được đăng một thời gian trước đây bởi Lars-Åke Aspelin trong một số diễn đàn hoặc nhóm tin
    =MID(TÓM TẮT(--MID("01"&A1,SMALL((ROW($1. $300)-1)*ISNUMBER(-MID("01"&A1,ROW($1. $300),1)),ROW($1). $300))+1,1),10^(300-ROW($1. $300))),2.300)
    Đây là một công thức mảng và phải được xác nhận bằng CTRL+SHIFT+ENTER thay vì chỉ ENTER
    Nó có những hạn chế (đã biết) sau đây
    - Chuỗi nhập vào ô A1 phải ngắn hơn 300 ký tự
    - Phải có nhiều nhất 14 chữ số trong chuỗi đầu vào
    (Các chữ số sau sẽ được hiển thị dưới dạng số không. )
    Có thể không sử dụng thực tế, nhưng nó cũng sẽ xử lý chính xác hai trường hợp sau
    - a "0" as the first digit in the input will be shown correctly in the output
    - một đầu vào không có bất kỳ chữ số nào sẽ cho chuỗi trống làm đầu ra (chứ không phải 0)

  10. Jim nói.

    Tôi có thể sẽ sử dụng cụm từ thông dụng trong trường hợp này. Các chức năng là

    ************************************************

    Hàm RegExReplace(ReplaceIn, _
    ReplaceWhat As String, ReplaceWith As String, Tùy chọn IgnoreCase As Boolean = False)
    Làm mờ RE làm đối tượng
    Đặt RE = CreateObject("vbscript. biểu thức chính quy")
    LẠI. Bỏ quaCase = Bỏ quaCase
    LẠI. Mẫu = Thay thế cái gì
    LẠI. Toàn cầu = Đúng
    RegExReplace = RE. Thay thế (Thay thế vào, Thay thế bằng)
    chức năng kết thúc

    Hàm RegExFind(FindIn, FindWhat As String, _
    Tùy chọn IgnoreCase As Boolean = False)
    Dim i As Long
    Dim matchCount As Integer
    Dim RE dưới dạng đối tượng, allMatch dưới dạng đối tượng, aMatch dưới dạng đối tượng
    Đặt RE = CreateObject("vbscript. biểu thức chính quy")
    LẠI. Mẫu = FindWhat
    LẠI. Bỏ quaCase = Bỏ quaCase
    LẠI. Toàn cầu = Đúng
    Đặt allMatch = RE. Thực thi(FindIn)
    matchCount = allMatch. Đếm
    Nếu matchCount >= 1 Thì
    ReDim rslt(0 To allMatches. Đếm - 1)
    For i = 0 To allMatches. Đếm - 1
    kết quả (trong) = tất cả các trận đấu (i). Giá trị
    tiếp theo tôi
    RegExFind = rslt
    Khác
    RegExFind = ""
    kết thúc nếu
    chức năng kết thúc

    ************************************************

    và cách sử dụng là

    =RegExFind(B4,"\d{2,7}(\. )?\d{2,7}(\. \d{2}. ,0{1,2})?")

    Biểu thức \d{2,7}(\. )?\d{2,7}(\. \d{2}. ,0{1,2})? . Chỉ cần sử dụng biểu thức này. \d+ sẽ khớp với tất cả trừ hai trong số các bản ghi mẫu

    Chúc mừng,
    -Jim

  11. Godsbod nói.

    Giải pháp rõ ràng là tạo một bảng câu hỏi có cấu trúc hơn, với trường giá trị riêng biệt cho loại tiền và số lượng

    nhưng thách thức đang phát sinh gần như là một sản phẩm phụ xứng đáng

  12. Juan Fernandez nói.

    Công thức này có thể trích xuất nhiều số

    http. //www. get-kỹ thuật số-trợ giúp. com/2011/11/17/tách-số-từ-một-chuỗi-văn-bản/

    Trân trọng

    • Elias nói.

      @ Juan,

      Công thức đó không hoạt động trong trường hợp này

      Trân trọng

  13. Carl nói.

    Tôi nghĩ vấn đề lớn hơn là vấn đề được tạo ra bằng cách tách các số ra khỏi các chữ cái. Mục tiêu là để tìm ra những gì mọi người đang kiếm được trong công việc excel của họ và hiện tại chúng tôi có các con số nhưng không có tham chiếu đến đơn vị tiền tệ, vì vậy bạn không thể tính trung bình những con số này để tìm ra số tiền trung bình mà một nhân viên thông thạo excel kiếm được. Chúng tôi phải quay lại và xác định loại tiền tệ và tính tỷ giá hối đoái.  I think @Godsbod had it right. Bài học quan trọng hơn là suy nghĩ thông qua bảng câu hỏi để có được kết quả dễ quản lý hơn, đó là điều chúng tôi thực sự muốn

  14. Trích xuất số từ văn bản bằng Excel VBA - Cách thực hiện?. Chandoo. org - Học Microsoft Excel trực tuyến nói.

    [. ] tuần chúng ta đã thảo luận về cách trích xuất số từ văn bản trong Excel bằng công thức. Trong các bình luận, khá nhiều người cho rằng nên sử dụng VBA (Macros) để [. ]

  15. r nói.

    @Elias
    công thức của bạn rất đẹp. Nhưng tôi không hiểu tại sao phải sử dụng ma trận hằng số
    sử dụng ROW(1. 10)-1 và 1234567890. tốt hơn
    Ngoài ra, công thức của bạn không hoạt động trong các trường hợp tương tự như thế này ABCD 1234 EFGH. Bạn cần thực hiện những thay đổi nhỏ. Trong khi đó, tôi đề xuất cái này ngắn hơn và cũng hoạt động trong những trường hợp này
    =LEFT(REPLACE(A1,1,MIN(FIND(ROW(1. 10)-1,A1&57321^2))-1,),FIND(" ",REPLACE(A1,1,MIN(FIND(ROW(1. 10)-1,A1&57321^2))-1,)&" ")-1)
    Ah. 57321 là một số pandigital 🙂
    Trân trọng
    r
     
     
     

    • Elias nói.

      @r rất vui được gặp bạn xung quanh
      Ngoài số lượng ký tự, tôi không thấy bất kỳ lợi thế nào khi sử dụng tùy chọn hàng trên mảng hằng số. Tuy nhiên, việc sử dụng các hằng số sẽ tránh việc sử dụng nhập mảng và các công thức không bị lộn xộn nếu bạn chèn hoặc xóa các hàng
      Trân trọng

  16. r nói.

    @elias
    bạn nói đúng nhưng tôi không thể nhìn vào công thức
    chỉ là yếu tố thẩm mỹ. không thể nói "đẹp" bởi một ma trận hằng số
    Trân trọng
    r
     

  17. r nói.

    @elias
    tôi đã thay đổi công thức của bạn. vì vậy nó hoạt động với ABCD 1234 EFGH
    =--GIỮA(TRÁI(A1,TÌM(" ",A1&" ",MIN(TÌM(ROW(1. 10)-1,A1&57321^2)))-1),MIN(TÌM(ROW(1). 10)-1,A1&57321^2)),20)
    bạn nghĩ sao?
    Trân trọng
    r
     

    • Elias nói.

      @r

      Tôi thích cái đó, nhưng nó không hoạt động với những trường hợp như thế này ABCD12345EFGH. Vì vậy, những gì về cái này?

      =--TRA CỨU(9. 9E+307,--TRÁI(MID(A1,MIN(TÌM(ROW(1. 10)-1,A1&57321^2)),255), HÀNG(1. 255)))

      Trân trọng

      • Jim nói.

        Giải pháp RegEx của tôi ở trên xử lý cả ABCD 1234 EFGH và ABCD12345EFGH

        Chúc mừng,
        -Jim

  18. r nói.

    ồ @elias. tuyệt vời. tôi thích nó
    và, tại sao không như vậy
    =-LOOKUP(0,-LEFT(MID(A1,MIN(FIND(ROW(1. 10)-1,A1&57321^2)),255), HÀNG(1. 255)))
    🙂
    r
     

  19. r nói.

    ufff. vì thế
    =-LOOKUP(0,-LEFT(MID(A1,MIN(FIND(ROW(1. 10)-1,A1&57321^2)),255), HÀNG(1. 255)))

    • Elias nói.

      @r
      Vâng. Tôi thích cách sử dụng dấu âm ở 2 vị trí khác nhau

      Trân trọng

    • bẽn lẽn nói.

      Tuyệt vời. Tôi đã có thể sử dụng công thức này để trích xuất số đầu tiên từ danh pháp HGVS (xã hội biến đổi bộ gen người)

      c. 247_248delCG 247

      p. Glam789_Arg790del 789

      các c. hoặc p. đôi khi bị bỏ qua và các số có thể có độ dài thay đổi (1-12 chữ số)

      Tôi muốn hiểu cách thức hoạt động của công thức này. Về cơ bản tôi biết tra cứu, trái, giữa, phải và tìm nhưng điều này là trên đầu của tôi

      Cảm ơn bạn

  20. Trích xuất ngày tháng từ văn bản - Cách viết Công thức Excel?. Chandoo. org - Học Microsoft Excel trực tuyến nói.

    [. ] Trích xuất số từ văn bản bằng công thức [. ]

  21. joel nói.

    Ông. chandoo,
    xin nhờ bạn giúp đỡ
    Tôi muốn có mã cho Excel 2010, để liệt kê trên một trang tính tất cả các macro từ sổ làm việc excel
    làm ơn, hãy giúp tôi trong việc này

    Cảm ơn rât nhiều

  22. Raj nói.

    Tôi muốn phân tách thành từng cột như 25 PF 105 E01 XXXX, từ các ví dụ bên dưới, vui lòng trợ giúp hoặc viết thư srinivasmr@rediffmail. com

    25PF105E01XXXX

    100SP105E02XXXX

  23. Jim nói.

    Chào Raj,

    Sử dụng chức năng RegExReplace tôi đã đăng ở trên và sau đó sử dụng chức năng này

    =RegExReplace(A1,"(^\d{2,3})(\w{2})(\d{3})(\w{3}(\w{4}))","$1 $2 $3

    nơi văn bản bạn muốn phân tích nằm trong ô A1.  

    Và kết quả là

    25 PF 105 XXXX
    100 SP 105 XXXX

    Nó đưa ra các giả định sau

    - Phần đầu ít nhất là 2 nhưng nhiều hơn 3 chữ số
    - Phần thứ hai là 2 nhân vật
    - Phần thứ ba gồm ba chữ số
    - Phần thứ tư gồm 4 ký tự chữ và số

    Chúc mừng,
    -Jim
            

    • rao nói.

      Xin chào

      bạn có thể cho tôi biết làm thế nào để tìm hiểu regex cho tôi biết các trang web để tìm hiểu cho tôi

      id thư của tôi. raoexcel@gmail. com

  24. Rahim Zulfiqar Ali nói.

    =IF(ISERROR(MID(B11,FIND("/",B11,1)-2,10)),"",(MID(B11,FIND("/",B11,1)-2,10))

  25. Santoshi nói.

    Xin chào,

    Tôi gặp sự cố khi có một chuỗi số và chữ cái được phân tách bằng dấu phẩy. (Q123,125-129,QA123,127-129)

    Tôi muốn mở rộng các số bên trong dấu gạch nối để nó trở thành
    (Q123,125,126,127,128,129,QA123,127,128,129)

    Điều này có thể hoàn thành chỉ bằng các công thức không

  26. Vijay Verma nói.

    Kiểm tra cái này. Đây có vẻ là điều đúng đắn để làm
    http. //www. diễn đàn excel. com/excel-formulas-and-functions/653043-extracting-numbers-from-alphanumeric-strings. html
    Điều này nói như sau -
    Thử cái này

    A1. abc123def456ghi789

    Đầu tiên, tạo một công thức được đặt tên
    Tên trong sổ làm việc. tuần tự
    đề cập đến. =ROW(INDEX($1. $65536,1,1). CHỈ SỐ($1. $65536,255,1))

    CÔNG THỨC Mảng này loại bỏ TẤT CẢ các số không phải là số khỏi một chuỗi
    B1. =SUM(IF(ISNUMBER(1/(MID(A1,seq,1)+1)),MID(A1,seq,1)*10^MMULT(-(seq

    In the example, the formula returns. 123456789
     

  27. antonio nói.

    Hãy giúp tôi
    Tôi cần mã cho Excel 2010 để liệt kê tất cả các macro của sách excel, trong một trang tính. tên của macro và trang tính của macro
    cảm ơn nhiều

    • Hui. says.

      @Antonio

      Hãy thử những điều sau đây

      Sub ListMacros()
      ' Code thanx to Bob Philips
      Const vbext_pk_Proc = 0
      Dim VBComp As Object
      Dim VBCodeMod As Object
      Dim oListsheet As Object
      Dim StartLine As Long
      Dim ProcName As String
      Dim iCount As Integer

      Ứng dụng. Đang cập nhật màn hình = Sai
      Khi gặp lỗi Tiếp tục Tiếp theo
      Đặt oListsheet = ActiveWorkbook. bảng tính. Thêm vào
      iCount = 1
      oBảng danh sách. Phạm vi ("A1"). Giá trị = "Vĩ mô"

      Cho Mỗi VBComp Trong ThisWorkbook. Dự án VB. Thành phần VB
      Đặt VBCodeMod = ThisWorkbook. Dự án VB. VBComponents(VBComp. Tên). MãModule
      Với VBCodeMod
      Dòng bắt đầu =. CountOfDeclarationLines + 1
      Thực hiện Cho đến Dòng Bắt đầu >=. CountOfLines
      oBảng danh sách. [a1]. Độ lệch (iCount, 0). Giá trị =. ProcOfLine(Dòng Bắt đầu, vbext_pk_Proc)
      iCount = iCount + 1
      Dòng Bắt đầu = Dòng Bắt đầu +. ProcCountLines(. ProcOfLine(Dòng Bắt đầu, vbext_pk_Proc), vbext_pk_Proc)
      Vòng
      Kết thúc với
      Đặt VBCodeMod = Không có gì
      VBComp tiếp theo

      Ứng dụng. Đang cập nhật màn hình = True
      kết thúc phụ

      hoặc có một cái nhìn tại. http. // msdn. Microsoft. com/en-us/library/office/dd890502%28v=office. 11%29. aspx

      • antonio nói.

        Rất cảm ơn Huis
        Excel 2010 báo lỗi ở tất cả các dòng

        Cho Mỗi VBComp Trong ThisWorkbook. Dự án VB. Thành phần VB
        Đặt VBCodeMod = ThisWorkbook. Dự án VB. VBComponents(VBComp. Tên). MãModule
        Với VBCodeMod
        Dòng bắt đầu =. CountOfDeclarationLines + 1
        Thực hiện Cho đến Dòng Bắt đầu >=. CountOfLines
        oBảng danh sách. [a1]. Độ lệch (iCount, 0). Giá trị =. ProcOfLine(Dòng Bắt đầu, vbext_pk_Proc)
        iCount = iCount + 1
        Dòng Bắt đầu = Dòng Bắt đầu +. ProcCountLines(. ProcOfLine(Dòng Bắt đầu, vbext_pk_Proc), vbext_pk_Proc)
        Vòng
        Kết thúc với
        Đặt VBCodeMod = Không có gì
        VBComp tiếp theo

        lời chào hỏi

        • Hui. says.

          @Antonio
          Bạn đã thử chưa. http. //ủng hộ. Microsoft. com/KB/315731
          hoặc là
          http. //www. mrexcel. com/forum/excel-câu hỏi/114783-how-get-macro-names-vbulletin-visual-basic-applications. html

          • antonio nói.

            Cảm ơn nhiều
            Tôi đã thử nhưng nó không cho kết quả đối với Excel 2010
            Mã này dành cho Excel 2007 hoặc VB, nhưng nó không hoạt động trong Excel 2010

            Trân trọng
            antonio

  28. Justin says.

    Công thức này hoạt động hoàn hảo với định dạng số Châu Âu, 2 số, không có số, số lớn

    =IFERROR(TRA CỨU(9. 99999999999999E+307,--MID(A1,MIN(FIND(ROW($1. $10)-{1},A1&56^7)),ROW(INDIRECT("1. "&LEN(A1))))),"")

    đọc thêm. http. //www. xuất sắc. com/cách-tìm-số-đầu-tiên-trong-một-chuỗi-văn-bản-sử-dụng-công-thức-excel/

  29. Beth nói.

    Với dữ liệu tôi có, tôi đã có thể sử dụng phương pháp đầu tiên của bạn một cách thành công. Trong trường hợp của tôi, tôi không phải lo lắng về bất kỳ dấu phẩy hoặc số thập phân nào; . Vì vậy, sau khi tạo phạm vi được đặt tên cho lstNumbers, tôi có thể sử dụng công thức vị trí bắt đầu, công thức số lượng ký tự và sau đó sử dụng hàm MID để nhận các giá trị tôi cần

    Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn. 🙂

  30. Trích xuất chữ số từ văn bản. Sử dụng Công thức và Thiết kế Hàm Excel bị Thiếu. CÁC NHÓM. Nội dung hiệu suất của Excel và UDF nói.

    […] Ví dụ tiếp theo là từ Chandoo […]

  31. Jimmy Lương nói.

    Điều đó thật tuyệt. Cảm ơn rất nhiều

  32. MF nói.

    Gần đây tôi đã gặp chính xác tình huống tương tự, đây là cách tiếp cận của tôi để giải quyết nó
    =MID(A2,MIN(TÌM({0,1,2,3,4,5,6,7,8,9},A2&"0123456789")),COUNT(0+MID(A2,ROW(INDIRECT( . "&LEN(A2))),1)))+0
    Ctrl Shift Nhập

    Tuy nhiên, không hoạt động cho tất cả các trường hợp, e. g. với hơn 1 bộ số

    Đây là bài viết của tôi để chia sẻ
    http. //wmfexcel. báo chí. com/2014/09/06/how-excel-formula-can-save-your-time/

  33. Umer nói.

    tôi đang sử dụng công thức
    {=MIN(IFERROR(FIND(lstNumbers,A1),””))}
    để giải nén 61. 49 từ 61. 49 mg nhưng nó đang cho
    #giá trị

    có gì sai xin hướng dẫn

    • Thomas nói.

      Xin hãy giúp tôi với vấn đề này
      Tôi có một dữ liệu như dưới đây
      IMR 123 , IMR456 , IMR #378 & IMR @890, MQC 123, QC234
      Bây giờ có nhiều bản ghi như hàng trên
      Tôi chỉ muốn Số sau từ IMR
      Ví dụ ở trên tôi cần đầu ra là
      123
      456
      378
      890
      Tất cả trong các hàng khác nhau

  34. jpcpa nói.

    chào ngài. Tôi chỉ về cách tôi có thể tách tên và số thông tin TAx trong hai cột với dữ liệu bên dưới

    "Kho ứng dụng HUB KỸ THUẬT SỐ SAVER'S (1 Condura ) VAT 215-003-620
    ""DIGITEL MOBILE PHIL. VMH SUN-0922-877-7139 VAT 215-398-626
    ""DIGITEL MOBILE PHIL. VMH SUN-0922-877-7139 VAT 215-398-626
    "" DAPO REST VÀ THANH VAT 217-078-338
    ""WILCON BUILDER'S DEPOT INC. (1 chiếc. Keo Vinyl Gốc Nước 1 Gallon &
    110 chiếc. Kent Vinyl WP Deluxe 6""X36"" Gỗ sồi tự nhiên-YHT) VAT 221-252-819
    ""WILCON BUILDERS DEPOT INC. thuế GTGT 221-252-819
    ""AVEXSON CORPORATION VAT 221-764-997"
    "AVEXSON CORPORATION (đối với ZDJ 514) VAT 221-764-997
    "" CÔNG TY CỔ PHẦN NHÀ HÀNG TOKYO TERIYAKI. thuế GTGT 226-172-350
    ""CUNG CẤP PHỤ TÙNG ĐÁ QUÝ TRG AUTO NV234-220-733"

    Cảm ơn ngài

    • Hui. says.

      @JCPCA

      Có gì sai với câu trả lời trước đây của tôi?
      Vui lòng đặt câu hỏi trong Diễn đàn và đính kèm tệp mẫu
      http. //chandoo. tổ chức/diễn đàn/

  35. Martin nói.

    Xin chào, bạn đã nhận xét rằng
    Như bạn có thể thấy, phương pháp này hoạt động tốt, nhưng không thành công trong một số trường hợp như,
    Định dạng số châu Âu (, cho dấu thập phân và. hàng ngàn)
    Văn bản có nhiều số

    May mắn thay, trong bộ dữ liệu của tôi, chúng tôi chỉ gặp một vài sự cố như thế này. Vì vậy, tôi đã quyết định điều chỉnh chúng theo cách thủ công hơn là tìm ra công thức thậm chí còn phức tạp hơn

    Đây là vấn đề của tôi, hầu như tất cả dữ liệu của tôi đều ở định dạng này và tôi cần một công thức để giải quyết vấn đề này

  36. kimdom nói.

    Tôi chỉ không thể khiến bản thân mình nghĩ logic excel. Ai đó giúp đọc số ngày từ danh sách như

    15 tháng 11 PUTS (23 ngày)
    15 tháng 3 TIKS (3 ngày)
    Ngày 1 tháng 3 TIKS (25 ngày)
    Tháng 611 TIKS (10 ngày)

    Vì vậy người đọc xin gửi lại sau đây
    23
    3
    25
    10

    vân vân

    • Chandoo says.

      Chào kimdom

      Hãy thử điều này (giả sử giá trị văn bản trong A1)

      =SUBSTITUTE(MID(A1, FIND("(",A1)+1,99)," ngày)","")+0

      • kimdom nói.

        ồ vâng. Tuyệt vời

  37. Shlomi nói.

    Chúc mọi người một ngày tốt lành,

    không thể tìm thấy giải pháp cho tất cả các nhận xét trên. có lẽ ai đó có thể giúp tôi với điều này?

    tôi có trong một chuỗi ô chẳng hạn như 1. 2. 3. 4 và tôi muốn tìm xem chuỗi này có chứa một số xuất hiện trong ô khác hay không, giả sử ô $A$1 = 3
    Tôi đã có thể làm điều đó, NHƯNG
    khi tôi có chuỗi như. 1. 2. 13. 4 , nó nhìn vào số 3 (trên $A$1) và trả về như thể số này là một phần của chuỗi
    Nhưng tôi muốn kiểm tra xem nó có chứa 13 KHÔNG 3 không

    Tôi đang nghĩ rằng có lẽ trước tiên tôi nên kiểm tra Độ dài trên ô A1 chứa số (3) và sau đó kiểm tra ô có chuỗi (1. 2. 13. 4)
    không thể tìm ra cách để làm điều đó

    Hãy thử công thức TÌM KIẾM hoặc thậm chí bằng VBA , Instr(A1,"1. 2. 13. 4"), nhưng không thành công. 🙁

    Bất kỳ trợ giúp sẽ được đánh giá cao

    Shlomi

  38. TMR nói.

    Cảm ơn bạn rất nhiều vì những bài học tuyệt vời của bạn cho người mới bắt đầu học excel như tôi
    Mình có một câu hỏi, nếu bạn có thời gian thì xem qua giúp mình nhé
    Hàng ngày tôi phải tải xuống danh sách các sản phẩm được bán trên trang web của mình
    Thật không may, trang web tiếp tục thêm số vào số sản phẩm của tôi để biến nó thành giá trị duy nhất cho hệ thống
    Ví dụ: số sản phẩm của tôi là A1
    Trong ngày đầu bán được 2 mặt hàng A1 thì hệ thống sẽ hiện A1-1, A1-2
    Và đôi khi, nếu tôi sử dụng nhầm mô tả của danh sách cho A1-1 làm mẫu để liệt kê danh sách mới thì số mô hình sẽ trở thành A1-1-2

    Vì vậy, tôi sẽ có một danh sách A1, A1-1, A1-2, A1-1-2, A1-1-2-1. Ví dụ
    Tôi muốn xóa tất cả các phần đã thêm sau A1
    Bạn có thể giúp tôi với vấn đề này?

    Cảm ơn vi đa danh thơi gian cho tôi

    • Hui. says.

      @TMR
      Tôi sẽ giả sử A1-??
      Sử dụng trình trợ giúp Cột =Left(A1,2) sau đó sao chép nó xuống
      Nếu A1 có thể là A11, v.v., hãy sử dụng =Left(A1,Find("-",A1)-1)
      sau đó sao chép nó xuống

      • TMR nói.

        Cảm ơn Huy đã trả lời
        Tôi thấy câu trả lời của bạn và nó thực sự hoạt động với Sản phẩm chỉ có 2 ký tự như A1
        Nhưng tôi cũng có một số sản phẩm khác có số. FA-3MF-BK
        hoặc GFT-HJKU-25-BKJ
        Vì vậy, khi tôi tải xuống tệp từ hệ thống, nó luôn như thế này
        FA-3MF-BK-1-2
        FA-3MF-BK-3
        GFT-HJKU-25-BKJ-1-1-2
        GFT-HJKU-25-BKJ-2-1

        Trong trường hợp này, tôi nên làm gì?

        • Hui. says.

          @TMR
          Làm thế nào về việc đăng câu hỏi trong Chandoo. diễn đàn org
          https. //chandoo. tổ chức/diễn đàn/

          Vui lòng đính kèm tệp mẫu với ví dụ về phạm vi đầu vào và đầu ra mà bạn mong đợi?

          Nếu không thì chúng ta sẽ đi lòng vòng trong nhiều tuần

  39. Jeff Faris nói.

    Tôi cần có thể trích xuất một ngày từ số lô được định dạng này. F19021286Z. Tôi không cần F hay Z. 19 (năm) 02(tháng) 12(ngày) 86 (hai số cuối là số thứ tự và không cần thiết