Tìm và bỏ và thay thế mã hiệu ?

Liên hệ QC

Chuotdong

Thành viên thường trực
Tham gia
28/11/06
Bài viết
255
Được thích
60
Tôi có 1 bài toán sau , các bạn giải giúp:
Thay các mã định mức mới bằng các mã định mức mới tương ứng hoặc: ở dạng danh sách có sẵn ở sheet DANH SACH hoặc: (chắc tình huống này phức tạp hơn) thay thế với định mức đã được ghi chú ở trong ngoặc (DM: ........)

Sau đó xóa bỏ ghi chú trong ngoặc đơn đó
 
Lần chỉnh sửa cuối:
Dear Chuotdong,
----------------
Cụ thể trong file đính kèm của bạn, có phải bạn muốn trong sheet 'Hang muc gốc' đưa định mức mới tương ứng vào cột C, chẳng hạn:
Giá trị tại cột 'Hang muc gốc'!$C8= 21.020400.10
Giá trị tại cột 'Hang muc gốc'!$C9= 21.020400.20
...
Theo mình sử dụng hàm VLOOKUP hoặc hàm MID có thể giải quyết được yêu cầu này.
 
Lần chỉnh sửa cuối:
Tôi muốn kết quả như ở Sheet: Hang muc mới (gồm thay mã định mức vào cột B và bỏ các ghi chú trong (...) các ô trong cột F)

,nhờ các bạn đặt hàm giúp
 
Bạn dùng thử file sau xem sao nhé!Cách sử dụng:Nhấn Alt+F8 để chạy Macro Thaythe
 

File đính kèm

  • dutoan1-2_New.rar
    22.1 KB · Đọc: 59
nvson đã viết:
Bạn dùng thử file sau xem sao nhé!Cách sử dụng:Nhấn Alt+F8 để chạy Macro Thaythe
Chạy tốt lắm bạn ạ
Nhưng mình sửa thành nếu không phải "DM" mà là "MH" chẳng hạn thì khi chạy nó bị thừa ra chữ h, không biết có phải sửa đoạn nào trng Macro của bạn nữa:

[FONT=.VnArial]Bèc dì thñ c«ng thiÕt bÞ theo cÊu kiÖn khèi l&shy;îng <= 80 kg (MH: 21.030300.10)[/FONT]

[FONT=.VnArial]Bèc dì thñ c«ng thiÕt bÞ theo cÊu kiÖn khèi l&shy;îng <= 80 kg (DM: 21.030300.10)[/FONT]

....
Mã:
On Error Resume Next
Dim Row_i As Long
Dim i As Long
Dim GiaTri, DinhMuc As String, CongViec As String
Dim Luu
Luu = Application.Calculation
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Sheets("Hang muc goc").Copy After:=Sheets("Hang muc goc")
ActiveSheet.Name = "Hang muc moi"
ActiveSheet.Tab.ColorIndex = 3
Row_i = 8
Do While Not IsEmpty(Cells(Row_i, 2))
GiaTri = Cells(Row_i, 6)
For i = Len(GiaTri) To 1 Step -1
If Mid(GiaTri, i, 1) = "(" Then Exit For
Next i
CongViec = SuperTrim(Mid(GiaTri, 1, i - 1))
DinhMuc = LCase(Mid(GiaTri, i))
DinhMuc = Replace(DinhMuc, "(", "")
DinhMuc = Replace(DinhMuc, ")", "")
DinhMuc = Replace(DinhMuc, "M", "")
DinhMuc = Replace(DinhMuc, "H", "")
DinhMuc = Replace(DinhMuc, ":", "")
DinhMuc = SuperTrim(DinhMuc)
Cells(Row_i, 2) = DinhMuc
Cells(Row_i, 6) = CongViec
Row_i = Row_i + 1
Loop
Application.ScreenUpdating = True
Application.Calculation = Luu
End Sub
Bạn bổ sung giúp là nếu không có (....) trong tên Công việc thì sẽ thay thế theo Bảng chuyển mã được định nghĩa ở sheet DANHSACH
 
Chỉnh sửa lần cuối bởi điều hành viên:
Chuotdong đã viết:
Bạn bổ sung giúp là nếu không có (....) trong tên Công việc thì sẽ thay thế theo Bảng chuyển mã được định nghĩa ở sheet DANHSACH
[FONT=.VnArial]Bèc dì thñ c«ng thiÕt bÞ theo cÊu kiÖn khèi l&shy;îng <= 80 kg (MH: 21.030300.10)
Bèc dì thñ c«ng thiÕt bÞ theo cÊu kiÖn khèi l&shy;îng <= 80 kg (DM: 21.030300.10)[/FONT]
Vì mình đã dùng hàm LCase để chuyển hết về chữ thường rồi nên trong những câu lệnh:
Mã:
DinhMuc = Replace(DinhMuc, "M", "")
DinhMuc = Replace(DinhMuc, "H", "")
====> bạn chỉ đánh chữ thường thôi.
Khi dữ liệu trong sheet danh sách lớn thì bạn sửa lại cách đặt tên vùng để macro chạy được tốt.
Hy vọng qua những hàm (Offset, counta...) bạn sẽ đặt lại vùng dữ liệu của "SoHieuDinhmuc" tốt hơn! (Đã giới thiệu rất nhiều trên GPE rồi)
Bạn thử chạy file sau xem!
 

File đính kèm

  • dutoan1-2_LanII.rar
    23.1 KB · Đọc: 32
Lần chỉnh sửa cuối:
Dear all,
--------
Theo mình, với bài toán này có thể dùng các hàm cơ bản của Excel là đủ. Cụ thể bạn dùng hàm MID và hàm LEFT để tách 2 thành phần thông qua dấu hiệu phân tách là chuỗi "(DM:"
Để chính xác bạn cần Replece all (Ctrl+H) một số lỗi chính tả ở sheet 'Hang muc gốc' như:
":4" thành ": 4"
":2" thành ": 2"
vì theo quan sát của mình mã định mức chuẩn gồm cố định 12 ký tự và đứng sau chuỗi "DM: " (bao gồm khoảng trắng sau dấu hai chấm)
Các bước:
1. Đặt cho cột Nội dung công việc trong sheet 'Hang muc gốc' một cái tên, tôi đặt là "HMG_Noidung" với Refers to:='Hang muc gốc'!$F$8:$F$295
2. Tại sheet 'Hang muc mới':
- Công thức cho cột Định mức mới:
=MID(HMG_Noidung;FIND("(DM:";HMG_Noidung)+5;12)
- Công thức cho cột Nội dung công việc:
=LEFT(HMG_Noidung;LEN(HMG_Noidung)-19)
So sánh 2 kết quả mà các bạn xử lý không có gì khác nhau nhưng lợi điểm ở đây là các bạn có thể dùng hàm để ứng dụng cho các trường hợp khác(nhất là những người ghét cay ghét đắng VBA như mình)+-+-+-+
 
Đào Việt Cường đã viết:
Dear all,
So sánh 2 kết quả mà các bạn xử lý không có gì khác nhau nhưng lợi điểm ở đây là các bạn có thể dùng hàm để ứng dụng cho các trường hợp khác(nhất là những người ghét cay ghét đắng VBA như mình)+-+-+-+
Mình cũng ghét VBA nhưng lí do là vì dốt không biết gì về nó;-) một lí do khác là hay bị các chương trình cảnh báo virus(nên gửi cho người khác dùng cứ bị nghi ngại). Tuy nhiên dùng hàm thì nhiều bài toán khó giải lắm hoặc nếu giải được phải dùng rất nhiều cột phụ hoặc bạn phải rất hiểu sâu về Excel
 
Web KT
Back
Top Bottom