Ghép những số bên CELL 1 sang những CELL bên cạnh

Chia sẻ bởi:molmol123484
★★★★★
Quảng cáo

Cho mình hỏi: Từ giá trị CELL C2 chúng ta có thể lấy sang các Cell như trong file của mình không vậy? Và nếu trong ô B3 có giá trùng giá trị của những cell khác bên trên ta tìm được thì sẽ hiện mầu nền mầu đỏ như trong file.
Dẫy số bên C2 có 716-207-133
thì nhữn giá trị /2 ta phải ra kết quả 71 76 77 72 70 71 73 11 16 12 10 17 13 66 67 61 62 60 67 61 63 22 20 27 21 23 v.v
D3: Nếu có số 02 trùng với kết quả ở những chuỗi số ta lấy được ở trên thì sẽ có mầu nền mầu đỏ.
Hoàn toàn lấy từ điều kiện bên C2 chứ. Dẫy số bên C2 có 716-207-133
thì nhữn giá trị /2 ta phải ra kết quả 71 76 77 72 70 71 73 11 16 12 10 17 13 66 67 61 62 60 67 61 63 22 20 27 21 23 v.v
cảm ơn

Vậy tóm lại điều bạn cần là gì:
1> Là liệt kê các số ra vùng D2:AM2
hay:
2> Tô màu cho cell trong D2:AM2 khi nó trùng với B3
————–
Với câu 1: Đó là bài toán tổ hợp —> Phải dùng VBA
Với câu 2: Chỉ cần dùng conditional formating là được

Công thức cũng có thể làm được, nhưng lại thêm phần lọc duy nhất vào thì chắc.. đuối luôn
Duy nhất ở đây nghĩa là: số 3 lập lại 2 lần nhưng chỉ tính có 1 (chỉ ghép 1 lần)
17793

Vâng, vậy ta có thể ghép số dạng như trong file này em gửi được không vậy?
Ta tách thành 3 CELL để ghép.
Ta lấy giá trị của từng chuỗi số ghép với nhau của CELL D2:F2
Ví dụ: Giá trị ta cho vào
D2 E2 F2
227 816 805
Lọc chuỗi số cho H2 đến BD2
22 27 28 21 26 20 25 Tiếp đến(Vì số 2 có rồi nên bỏ qua) ta lại ghép 77 78 71 76 (Vì 78 có rồi nên ta bỏ qua) 70 75 lại tới 88 82 87 81 86 80 85 cứ như thế tới BD2
Như vạy có được không.

Tôi làm cho bạn bằng công thức với kiểu File đầu tiên 716-207-133, nhưng chuyển sang cột nhé
Trong File có sử dụng công thức:
Name dl

=IF(MID(Sheet1!$C$2,ROW(INDIRECT("1:"&LEN(Sheet1!$C$2))),1)<>"-",MID(Sheet1!$C$2,ROW(INDIRECT("1:"&LEN(Sheet1!$C$2))),1)*1,"")

Công thức tổ hợp

=SMALL(dl,ROUNDUP(ROW(1:1)/COUNT(dl),0))&SMALL(dl,ROUNDUP(ROW(1:1)/COUNT(dl),0)*COUNT(dl)-ROW(1:1)+1)

Công thức trính lọc (dạng chuỗi)

=INDEX($C$3:$C$83,SMALL(IF(FREQUENCY($C$3:$C$83*1,$C$3:$C$83*1),ROW(INDIRECT("1:"&ROWS($C$3:$C$83))),""),ROW(1:1)))
Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 2 ▥ 0
Quảng cáo

Bạn nên đọc

2 Responses

  1. mrchinh110 says:

    Bấm nút trong file để lấy kết quả thử nhé:
    17795

    Sub LietKe()
    Dim chuoi As String, kq(1 To 10000), i As Long, j As Long, tam As Variant, kqtam As Variant
    chuoi = & &
    With CreateObject("vbscript.regexp")
    .Global = True
    .Pattern = "B"
    tam = .Replace(chuoi, ",")
    End With
    kqtam = Split(tam, ",")
    With CreateObject("scripting.dictionary")
    For i = 0 To UBound(kqtam)
    For j = 0 To UBound(kqtam)
    If Not .exists(kqtam(i) & kqtam(j)) Then .Add kqtam(i) & kqtam(j), ""
    Next
    Next
    .Resize(, .Count).NumberFormat = "@"
    .Resize(, .Count) = .keys
    End With
    End Sub

  2. namanh2791 says:

    Thử bằng công thức:
    1> Đặt name

    tmp =IF(COUNTIF($D$2,"*"&ROW($1:$10)-1&"*"),ROW($1:$10)-1,"")
    UniqueNum =SMALL(tmp,ROW(INDIRECT("1:"&COUNT(tmp))))

    2> Công thức liệt kê

    =IF(INT((COLUMNS($A:A)-1)/COUNT(tmp))+1>COUNT(tmp),"",INDEX(UniqueNum,INT((COLUMNS($A:A)-1)/COUNT(tmp))+1)&INDEX(UniqueNum,MOD((COLUMNS($A:A)-1),COUNT(tmp))+1))

    Kéo fill sang phải
    Đề xuất dữ liệu đầu vào nhập vào 1 cell chứ không nên cho riêng 3 cell (ví dụ thế này 227-816-805)
    —————
    Thử bằng VBA,
    Chọn ô C2 hoặc C3 (hoặc ô nào muốn tách) rồi bấm nút. Cái vụ tô màu chưa tính.
    Public Sub GPE()
    Dim Rng As Range, Arr(), I As Long, J As Long, L As Long, K As Long, Dic As Object, Tem As Variant
    Set Dic = CreateObject("Scripting.Dictionary")
    Set Rng = Selection
    ReDim Arr(1 To 1, 1 To Len(Rng) ^ 2)
    L = Len(Rng)
    For I = 1 To L
    If Mid(Rng, I, 1) <> "-" Then
    For J = 1 To L
    If Mid(Rng, J, 1) <> "-" Then
    Tem = Mid(Rng, I, 1) & Mid(Rng, J, 1)
    If Not Dic.exists(Tem) Then
    K = K + 1
    Dic.Add Tem, ""
    Arr(1, K) = Tem
    End If
    End If
    Next J
    End If
    Next I
    Selection.Offset(, 1).Resize(, L ^ 2).ClearContents
    Selection.Offset(, 1).Resize(, K).Value = Arr
    Set Dic = Nothing
    End Sub

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm