Các phương pháp tách số từ chuỗi và ngược lại, đề nghị post tại đây

Liên hệ QC
cái này đơn gian mà, bạn có thể sử dụng công thức sau:

Nếu là: 20-1904 B3 lò gốm mình gọi ô chứa dữ liệu này là A1, bạn có thể đãnh công thức sau: =right(left(A1, 7),4)
Nếu là: 1902 7/3 cmt8 bạn chỉ cần gõ ct: =left(A1,4)
ÔI... có 1000 dòng thì gõ 1000 công thức... mệt đấy.
 
Tức là tách lấy từ bên trái đến khi gặp dấu phẩy thì ngưng, đúng không?

Vậy thì dùng công thức này tại cell G2:

PHP:
=LEFT(C2,FIND(",",C2)-1)

kéo fill xuống

Để chuyển nó thành số thật sự, dùng công thức này:

PHP:
=SUBSTITUTE(LEFT(C2,FIND(",",C2)-1),".","")*1
Hiii
Bạn thử cái này xem: =VALUE(SUBSTITUTE(LEFT(C3,LEN(C3)-3),".",","))
 
Chào các bác, mình có một danh sách rất dài, muốn tách dãy số phía trước ra thì làm như thế nào. Bác nào biết xin giúp đỡ. Xin cảm ơn!
Muốn Tách:Kết quả muốn:
DAAAQQ.23082020DAAAQQ
ADASS.24082020ADASS
AWASS.25082020AWASS
ASSJSS.26082020ASSJSS
TTDASLL.27082020TTDASLL
ADaaaaaaaASYY.28082020ADaaaaaaaASYY
…....
 

File đính kèm

  • test tach id.xlsx
    10.2 KB · Đọc: 15
Bạn tham khảo.
 

File đính kèm

  • test tach id.xlsx
    10.5 KB · Đọc: 9
Chào các bác, mình có một danh sách rất dài, muốn tách dãy số phía trước ra thì làm như thế nào. Bác nào biết xin giúp đỡ. Xin cảm ơn!
Muốn Tách:Kết quả muốn:
DAAAQQ.23082020DAAAQQ
ADASS.24082020ADASS
AWASS.25082020AWASS
ASSJSS.26082020ASSJSS
TTDASLL.27082020TTDASLL
ADaaaaaaaASYY.28082020ADaaaaaaaASYY
…....
Như này cũng được:
1598174777178.png
 
Chào các bác, mình có một danh sách rất dài, muốn tách dãy số phía trước ra thì làm như thế nào. Bác nào biết xin giúp đỡ. Xin cảm ơn!
Muốn Tách:Kết quả muốn:
DAAAQQ.23082020DAAAQQ
ADASS.24082020ADASS
AWASS.25082020AWASS
ASSJSS.26082020ASSJSS
TTDASLL.27082020TTDASLL
ADaaaaaaaASYY.28082020ADaaaaaaaASYY
…....
=LEFT(C3,FIND(".",C3)-1)
 

Bác cho mình hỏi thêm. Nếu như chuỗi đó không có dấu"." thì mình làm sao vậy bác?
Muốn Tách:Kết quả muốn: Lấy phần chữ từ 8 số bên phải qua
DAAAQQ23082020DAAAQQ
ADASS24082020ADASS
AWASS25082020AWASS
ASSJSS26082020ASSJSS
TTDASLL27082020TTDASLL
ADaaaaaaaASYY28082020ADaaaaaaaASYY
…....
 
Bác cho mình hỏi thêm. Nếu như chuỗi đó không có dấu"." thì mình làm sao vậy bác?
Muốn Tách:Kết quả muốn: Lấy phần chữ từ 8 số bên phải qua
DAAAQQ23082020DAAAQQ
ADASS24082020ADASS
AWASS25082020AWASS
ASSJSS26082020ASSJSS
TTDASLL27082020TTDASLL
ADaaaaaaaASYY28082020ADaaaaaaaASYY
…....
PHP:
=LEFT(C3,MIN(INDEX(FIND(ROW($1:$9)-1,C3&"0123456789"),))-1)
 
Bác cho mình hỏi thêm. Nếu như chuỗi đó không có dấu"." thì mình làm sao vậy bác?
Muốn Tách:Kết quả muốn: Lấy phần chữ từ 8 số bên phải qua
DAAAQQ23082020DAAAQQ
ADASS24082020ADASS
AWASS25082020AWASS
ASSJSS26082020ASSJSS
TTDASLL27082020TTDASLL
ADaaaaaaaASYY28082020ADaaaaaaaASYY
…....
=MID(C3,1,AGGREGATE(15,6,FIND(ROW($1:$10)-1,C3),1)-1)
=MID(C3,1,MATCH(1,INDEX(N(CODE(MID(C3,ROW($1:$20),1))<58),),)-1)
=MID(C3,1,MATCH(,INDEX(N(CODE(MID(C3,ROW($1:$20),1))>57),),)-1)
=MID(C3,1,MATCH(,INDEX(1-SIGN(1+MID(C3,ROW($1:$20),1)),),)-1)
 
Kính gửi các Anh, Chị!
lời đầu tiên xin gửi lời chúc sức khỏe tới các anh chị trong diễn đàn. Hiện tại em gặp một vấn đề khó khăn với file dạng chuỗi có khá nhiều dòng và không thể sử dụng hàm textjoin để nối vì quá dài nó báo lỗi Value khi sử dụng hàm textjoin.
- Giờ em muốn nối các chuỗi đó lại thành 1 chuỗi duy nhất và đếm số lần xuất hiện của những kí tự trong chuỗi được ngăn cách bởi dấu "," bằng code Vba. Kính mong các anh chị ai biết thì giúp em với.
Em xin chân thành cám ơn !
 

File đính kèm

  • Noi chuoi.xlsx
    1.2 MB · Đọc: 15
Kính gửi các Anh, Chị!
lời đầu tiên xin gửi lời chúc sức khỏe tới các anh chị trong diễn đàn. Hiện tại em gặp một vấn đề khó khăn với file dạng chuỗi có khá nhiều dòng và không thể sử dụng hàm textjoin để nối vì quá dài nó báo lỗi Value khi sử dụng hàm textjoin.
- Giờ em muốn nối các chuỗi đó lại thành 1 chuỗi duy nhất và đếm số lần xuất hiện của những kí tự trong chuỗi được ngăn cách bởi dấu "," bằng code Vba. Kính mong các anh chị ai biết thì giúp em với.
Em xin chân thành cám ơn !
Chào bạn, bạn muốn nối theo từng hàng hay muốn nối tất cả hàng và cột vào trong 1 ô?

.
 
Kính gửi các Anh, Chị!
lời đầu tiên xin gửi lời chúc sức khỏe tới các anh chị trong diễn đàn. Hiện tại em gặp một vấn đề khó khăn với file dạng chuỗi có khá nhiều dòng và không thể sử dụng hàm textjoin để nối vì quá dài nó báo lỗi Value khi sử dụng hàm textjoin.
- Giờ em muốn nối các chuỗi đó lại thành 1 chuỗi duy nhất và đếm số lần xuất hiện của những kí tự trong chuỗi được ngăn cách bởi dấu "," bằng code Vba. Kính mong các anh chị ai biết thì giúp em với.
Em xin chân thành cám ơn !
Sử dụng hàm Textjoin được:
A3 =SUBSTITUTE(TEXTJOIN(",",1,B3:CG3),",,","")
Sau đó text to column rồi đếm
TextJoin:
1627205341777.png

Text to column và đếm (sheet khác)

1627205400603.png
 
Lần chỉnh sửa cuối:
Sử dụng hàm Textjoin được:
A3 =SUBSTITUTE(TEXTJOIN(",",1,B3:CG3),",,","")
Sau đó text to column rồi đếm
TextJoin:
View attachment 263004

Text to column và đếm (sheet khác)

View attachment 263005
Cám ơn Thầy rất nhiều ạ, Nhưng thầy ơi file của em nó dài và nhiều kí tự trong chuỗi, nếu em sử dụng hàm thì file nó đọc công thức rất nặng và chạy gây treo máy ạ. Vậy có cách nào để code không Thầy? em xin gửi file giả laaoj và nội dung mong muốn e viết trong file, mong Thầy giúp giùm.
Một lần nữa cám ơn thầy và kính chúc Thầy nhiều sức khỏe, niềm vui trong cuộc sống!
Bài đã được tự động gộp:

Sử dụng hàm Textjoin được:
A3 =SUBSTITUTE(TEXTJOIN(",",1,B3:CG3),",,","")
Sau đó text to column rồi đếm
TextJoin:
View attachment 263004

Text to column và đếm (sheet khác)

View attachment 263005
Cám ơn Thầy rất nhiều ạ, Nhưng thầy ơi file của em nó dài và nhiều kí tự trong chuỗi, nếu em sử dụng hàm thì file nó đọc công thức rất nặng và chạy gây treo máy ạ. Vậy có cách nào để code không Thầy? em xin gửi file giả laaoj và nội dung mong muốn e viết trong file, mong Thầy giúp giùm.
Một lần nữa cám ơn thầy và kính chúc Thầy nhiều sức khỏe, niềm vui trong cuộc sống!
Bài đã được tự động gộp:

Bản office của em dùng là 2007, hàm nối chuỗi e tải trên GPE về ak, nhưng không biết cách sử dụng, nhưng dữ liệu của em nhiều lắm Thầy ơi, dùng code chứ hàm thì nó đọc lâu lắm vì file còn có các sheet khác ak lên tận 15mb nó treo máy mất ak!. Nếu code được thì tuyệt biết mấy
Cám ơn Thầy rất nhiều ạ, Nhưng thầy ơi file của em nó dài và nhiều kí tự trong chuỗi, nếu em sử dụng hàm thì file nó đọc công thức rất nặng và chạy gây treo máy ạ. Vậy có cách nào để code không Thầy? em xin gửi file giả laaoj và nội dung mong muốn e viết trong file, mong Thầy giúp giùm.
Một lần nữa cám ơn thầy và kính chúc Thầy nhiều sức khỏe, niềm vui trong cuộc sống!
Bài đã được tự động gộp:


Cám ơn Thầy rất nhiều ạ, Nhưng thầy ơi file của em nó dài và nhiều kí tự trong chuỗi, nếu em sử dụng hàm thì file nó đọc công thức rất nặng và chạy gây treo máy ạ. Vậy có cách nào để code không Thầy? em xin gửi file giả laaoj và nội dung mong muốn e viết trong file, mong Thầy giúp giùm.
Một lần nữa cám ơn thầy và kính chúc Thầy nhiều sức khỏe, niềm vui trong cuộc sống
 

File đính kèm

  • Xin giúp code noi nhieu chuoi.xlsm
    571.5 KB · Đọc: 11
Lần chỉnh sửa cuối:
Bản office của em dùng là 2007, hàm nối chuỗi e tải trên GPE về ak, nhưng không biết cách sử dụng, nhưng dữ liệu của em nhiều lắm Thầy ơi, dùng code chứ hàm thì nó đọc lâu lắm vì file còn có các sheet khác ak lên tận 15mb nó treo máy mất ak!. Nếu code được thì tuyệt biết mấy
ak đọc là ặc hay AK47?
- Cách tôi làm là dùng hàm textJoin của office 2019 trở lên, và viết công thức cho từng dòng chứ không viết cho cả 1 khối ngàn dòng
- Hàm bạn sưu tầm về có 3 tham số và dùng cho trường hợp cụ thể theo yêu cầu chứ không dùng lung tung được
- Viết code thì tôi viết được, nhưng trước tiên bạn cho biết mục đích của file này là gì? Có phải thống kê số đề hay không? Vì nếu tôi viết tức là tôi tiếp tay cho 1 việc phạm pháp.
 
ak đọc là ặc hay AK47?
- Cách tôi làm là dùng hàm textJoin của office 2019 trở lên, và viết công thức cho từng dòng chứ không viết cho cả 1 khối ngàn dòng
- Hàm bạn sưu tầm về có 3 tham số và dùng cho trường hợp cụ thể theo yêu cầu chứ không dùng lung tung được
- Viết code thì tôi viết được, nhưng trước tiên bạn cho biết mục đích của file này là gì? Có phải thống kê số đề hay không? Vì nếu tôi viết tức là tôi tiếp tay cho 1 việc phạm pháp.
File trên là e lấy chuỗi tạm để minh hoạ cho cách nối chuỗi mà thôi chứ không có ý khác,vì mỵc đích là để tìm kí tự giống nhau trong một chuỗi quá dài vượt kí tự của hàm textjoin.e thấy trên googlesheet có hàm lọc có thể làm được,nhưng excel thì lại ko,nên không biết code VBA mong thầy giúp ak.
Bài đã được tự động gộp:

Chào bạn, bạn muốn nối theo từng hàng hay muốn nối tất cả hàng và cột vào trong 1 ô?

.
Mình muốn nối all các hàng thành một ô,nhưng thử các cách rồi, đã lấy hàm tự tạo textjoin trong diễn đàn nhưng hình như textjoin không nối được vì quá 255 kí tự.cái này mình nghĩ phải dùng code vba.máy mình xài excel 2007.huhuhu
 
Mình người mới. Mình muốn hỏi điều này
ví dụ tên nhân viên : Nguyễn Thị Hà mã NV: NTH
Những tên nhân viện khác: Nguyễn Thu Hương--> Mã NV cũng lại là NTH ( mình muốn nó thành NTH01).
Bác nào chỉ giúp em với ạ ( viết lệnh VBA)
 
Mình người mới. Mình muốn hỏi điều này
ví dụ tên nhân viên : Nguyễn Thị Hà mã NV: NTH
Những tên nhân viện khác: Nguyễn Thu Hương--> Mã NV cũng lại là NTH ( mình muốn nó thành NTH01).
Bác nào chỉ giúp em với ạ ( viết lệnh VBA)
Dùng dictionary ghi key "NTH" với item là số lần xuất hiện key
 
Dùng dictionary ghi key "NTH" với item là số lần xuất hiện key
Dùng dictionary ghi key "NTH" với item là số lần xuất hiện key
Tại mình mới dùng VBA. Bạn có thể ghi giúp mình không ạ.
Mình mới chỉ tách được tên. Nhưng những tên trùng thì nó không hiện ra được số :((

Function Name(Str As String) As String
Dim i As Byte
Str = Trim(Str): Name = Left(Str, 1)
For i = 1 To Len(Str)
If Mid(Str, i, 1) = " " Then Name = Name + Mid(Str, i + 1, 1)
Next
End Function
 
Tại mình mới dùng VBA. Bạn có thể ghi giúp mình không ạ.
Mình mới chỉ tách được tên. Nhưng những tên trùng thì nó không hiện ra được số :((

Function Name(Str As String) As String
Dim i As Byte
Str = Trim(Str): Name = Left(Str, 1)
For i = 1 To Len(Str)
If Mid(Str, i, 1) = " " Then Name = Name + Mid(Str, i + 1, 1)
Next
End Function
Function xử lý từng ô thì không cần dùng dic, cần thêm tham số các mã được tạo trước đó
Mã:
Function Name(str As String, rng As Range) As String
  If str = Empty Then Exit Function
  Dim i As Long, k As Long, tmp As String, cel As Range
  str = Trim(str): tmp = Left(str, 1)
  For i = 1 To Len(str)
    If Mid(str, i, 1) = " " Then tmp = tmp + Mid(str, i + 1, 1)
  Next
  For Each cel In rng
    If cel.Value = tmp Then
      k = k + 1
    ElseIf cel.Value Like tmp & "##" Then
      k = k + 1
    End If
  Next cel
  If k = 0 Then
    Name = tmp
  Else
    Name = tmp & Format(k, "00")
  End If
End Function
 

File đính kèm

  • Help.xlsb
    14.4 KB · Đọc: 13
Web KT
Back
Top Bottom