Help: Công thức chạy hàm kết nối dữ liệu theo điều kiện (1 người xem)

  • Thread starter Thread starter adad
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

adad

Thành viên mới
Tham gia
4/9/08
Bài viết
47
Được thích
4
Chào Anh Chị
hiện tại em đang cần chạy hàm để kết nối dữ liệu của các huyện theo cùng tỉnh từ nhiều ô thành 1 ô, kính nhờ Anh Chị giúp đỡ.
Vd: Cùng tỉnh Cần Thơ thì sẽ tự động ghép các ô Ô Môn, Ninh Kiều, Bình Thủy lại thành 1 ô.
Em cám ơn nhiều
 

File đính kèm

Chào Anh Chị
hiện tại em đang cần chạy hàm để kết nối dữ liệu của các huyện theo cùng tỉnh từ nhiều ô thành 1 ô, kính nhờ Anh Chị giúp đỡ.
Vd: Cùng tỉnh Cần Thơ thì sẽ tự động ghép các ô Ô Môn, Ninh Kiều, Bình Thủy lại thành 1 ô.
Em cám ơn nhiều
Nối chuỗi dùng VBA mới nhanh.
 

File đính kèm

Chào Anh Chị
hiện tại em đang cần chạy hàm để kết nối dữ liệu của các huyện theo cùng tỉnh từ nhiều ô thành 1 ô, kính nhờ Anh Chị giúp đỡ.
Vd: Cùng tỉnh Cần Thơ thì sẽ tự động ghép các ô Ô Môn, Ninh Kiều, Bình Thủy lại thành 1 ô.
Em cám ơn nhiều
 

File đính kèm

Chào Anh Chị
hiện tại em đang cần chạy hàm để kết nối dữ liệu của các huyện theo cùng tỉnh từ nhiều ô thành 1 ô, kính nhờ Anh Chị giúp đỡ.
Vd: Cùng tỉnh Cần Thơ thì sẽ tự động ghép các ô Ô Môn, Ninh Kiều, Bình Thủy lại thành 1 ô.
Em cám ơn nhiều

Mình góp 01 hàm tự tạo.

PHP:
Function NoiChuoi(ByVal rng As Range, ByVal Province As String)
    Application.Volatile
    Dim arr(), darr()
    Dim i As Integer, k As Integer
    arr = rng
    ReDim darr(1 To UBound(arr), 1 To 1)
    For i = 1 To UBound(arr)
        If Province = arr(i, 1) Then
            k = 1                          
                If darr(k, 1) = "" Then
                    darr(k, 1) = arr(i, 2) 
                Else
                    darr(k, 1) = darr(k, 1) & "," & arr(i, 2)
                End If
        End If
    Next i
    NoiChuoi = darr()
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Chào Anh Chị
hiện tại em đang cần chạy hàm để kết nối dữ liệu của các huyện theo cùng tỉnh từ nhiều ô thành 1 ô, kính nhờ Anh Chị giúp đỡ.
Vd: Cùng tỉnh Cần Thơ thì sẽ tự động ghép các ô Ô Môn, Ninh Kiều, Bình Thủy lại thành 1 ô.
Em cám ơn nhiều
1 cách để bạn tham khảo
 

File đính kèm

Chào Anh Chị
hiện tại em đang cần chạy hàm để kết nối dữ liệu của các huyện theo cùng tỉnh từ nhiều ô thành 1 ô, kính nhờ Anh Chị giúp đỡ.
Vd: Cùng tỉnh Cần Thơ thì sẽ tự động ghép các ô Ô Môn, Ninh Kiều, Bình Thủy lại thành 1 ô.
Em cám ơn nhiều
Bạn xem thử 1 cách khác:
 

File đính kèm

Cám ơn Anh Chị nhiều nhé.
 
Bạn xem thử 1 cách khác:
Nhờ Anh chị giải thích giúp mình công thức này nha.

IF($A$1=1,INDEX($B$3:$B$10,MIN(Vung)),B13&IF($A$1>COUNT(Vung),"",IF(ISERROR(", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1))),"",", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1)))))
trong đó Vùng là IF(Sheet1!$A$3:$A$10=Sheet1!A13,ROW(Sheet1!$A$1:$A$8))

Mình xem mà không hiểu.. hic hic
 
Nhờ Anh chị giải thích giúp mình công thức này nha.

IF($A$1=1,INDEX($B$3:$B$10,MIN(Vung)),B13&IF($A$1>COUNT(Vung),"",IF(ISERROR(", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1))),"",", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1)))))
trong đó Vùng là IF(Sheet1!$A$3:$A$10=Sheet1!A13,ROW(Sheet1!$A$1:$A$8))

Mình xem mà không hiểu.. hic hic
Giải thích như sau:
IF(Sheet1!$A$3:$A$10=Sheet1!A13,ROW(Sheet1!$A$1:$A$8))
Bạn xem nhé: nếu từ A3:A10 =A13, thì 3 cái đầu tiên là Cần Thơ nên thỏa điều kiện tạo 1 mảng liên tiếp {1;2;3;FALSE;FALSE;FALSE;FALSE;FALSE} các đối số sau không thỏa điều kiện nên là FALSE.
Giải thích thêm, hàm Row là hàm dò vị trí dòng của 1 ô ta lấy Row(A1:A8) thì sẽ được vị trí từ dòng 1 đến dòng 8 là {1;2;3;4;5;6;7;8}
 
Nhờ Anh chị giải thích giúp mình công thức này nha.

IF($A$1=1,INDEX($B$3:$B$10,MIN(Vung)),B13&IF($A$1>COUNT(Vung),"",IF(ISERROR(", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1))),"",", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1)))))
trong đó Vùng là IF(Sheet1!$A$3:$A$10=Sheet1!A13,ROW(Sheet1!$A$1:$A$8))

Mình xem mà không hiểu.. hic hic
à đây là toán vòng lặp giải được cũng hay lắm haha
 
Giải thích như sau:
IF(Sheet1!$A$3:$A$10=Sheet1!A13,ROW(Sheet1!$A$1:$A$8))
Bạn xem nhé: nếu từ A3:A10 =A13, thì 3 cái đầu tiên là Cần Thơ nên thỏa điều kiện tạo 1 mảng liên tiếp {1;2;3;FALSE;FALSE;FALSE;FALSE;FALSE} các đối số sau không thỏa điều kiện nên là FALSE.
Giải thích thêm, hàm Row là hàm dò vị trí dòng của 1 ô ta lấy Row(A1:A8) thì sẽ được vị trí từ dòng 1 đến dòng 8 là {1;2;3;4;5;6;7;8}
Có nhiều vấn đề mình cần tìm hiểu nhờ Anh Chị giải thích giúp:
- Sao ô A1 lại là 100 khi MOD(A1,100)+1, trong khi mình bấm F9 chỉ là 1
- Trong hàm Vùng IF(Sheet1!$A$3:$A$10=Sheet1!A13,ROW(Sheet1!$A$1:$A$8)) thì vùng tham chiếu ROW lại là từ A1-A8 mà không là A3-A10?
- Anh Chị giải thích kỹ hơn về công thức này: IF($A$1=1,INDEX($B$3:$B$10,MIN(Vung)),B13&IF($A$1>COUNT(Vung),"",IF(ISERROR(", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1))),"",", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1))))) vì mình thấy đây là công thức hay, mà mình phải sử dụng nhiều, nên muốn tìm hiểu thật kỹ.
Cám ơn Anh Chị nhiều.
 
Có nhiều vấn đề mình cần tìm hiểu nhờ Anh Chị giải thích giúp:
- Sao ô A1 lại là 100 khi MOD(A1,100)+1, trong khi mình bấm F9 chỉ là 1
- Trong hàm Vùng IF(Sheet1!$A$3:$A$10=Sheet1!A13,ROW(Sheet1!$A$1:$A$8)) thì vùng tham chiếu ROW lại là từ A1-A8 mà không là A3-A10?
- Anh Chị giải thích kỹ hơn về công thức này: IF($A$1=1,INDEX($B$3:$B$10,MIN(Vung)),B13&IF($A$1>COUNT(Vung),"",IF(ISERROR(", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1))),"",", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1))))) vì mình thấy đây là công thức hay, mà mình phải sử dụng nhiều, nên muốn tìm hiểu thật kỹ.
Cám ơn Anh Chị nhiều.
đây là toán Hồi Quy nghe nói thế tức là tự lặp lại chính mình:
tại sao không row từ A3:A11 vì từ A3:A11 sẽ ra 1 dãy số liên tiếp: {3;4;5;6;7;8;9;10;11} mà ở đây ta cần là 1 dãy liên tục từ 1 đến 8, để làm gì bạn xem hàm index chứ nó lấy từ B3:B11. INDEX($B$3:$B$10,SMALL(Vung,$A$1))).
Bạn đã hiểu hàm index chưa Index(vùng lấy dữ liệu, số dòng) nếu lấy số dòng theo số liên tiếp từ 3 trở đi sẽ sai đúng không.
A1 là Mod(A1,100)+1 thì mình cũng chịu nhưng nó sẽ tạo ra 1 số vòng lặp liên tục từ 1 đến 100 nhưng ta không thấy được
đã nói là tạo 1 số liên tục từ 1 đến 100 nên công thức sẽ thành thế này:
Nếu A1=1 thì lấy vùng dữ liệu từ B3:B10, Min là lấy số nhỏ nhất trong mảng thỏa điều kiện là {1;2;3;FALSE;FALSE;FALSE;FALSE;FALSE} tương đương số 1 nên ta ra Ninh Kiều tiếp đến lấy chính nó là B13 ghép (&) với 1 điều kiện tiếp theo nếu A1 lớn hơn vùng (đếm được là 3) thì ngưng, còn không sẽ tiếp tục lặp lại ở đây A1 đã chuyển sang là 2 và hàm lấy số nhỏ thứ 2 small(vùng,A1(tức là 2) rồi cứ liên tiếp đến khi đếm số giá trị lớn hơn A1 thì ngừng lại, đôi khi có lỗi nên dúng if(iserror()) để bẫy lỗi, nếu là excel 2007 trở lên chỉ cần iferror(công thức,"') là xong.
đây là công thức ngắn nếu là excel 2007 trở lên:
=IF($A$1=1,INDEX($B$3:$B$10,MIN(Vung)),B13&IF($A$1>COUNT(Vung),"",IFERROR(", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1)),"")))
 
đây là toán Hồi Quy nghe nói thế tức là tự lặp lại chính mình:
tại sao không row từ A3:A11 vì từ A3:A11 sẽ ra 1 dãy số liên tiếp: {3;4;5;6;7;8;9;10;11} mà ở đây ta cần là 1 dãy liên tục từ 1 đến 8, để làm gì bạn xem hàm index chứ nó lấy từ B3:B11. INDEX($B$3:$B$10,SMALL(Vung,$A$1))).
Bạn đã hiểu hàm index chưa Index(vùng lấy dữ liệu, số dòng) nếu lấy số dòng theo số liên tiếp từ 3 trở đi sẽ sai đúng không.
A1 là Mod(A1,100)+1 thì mình cũng chịu nhưng nó sẽ tạo ra 1 số vòng lặp liên tục từ 1 đến 100 nhưng ta không thấy được
đã nói là tạo 1 số liên tục từ 1 đến 100 nên công thức sẽ thành thế này:
Nếu A1=1 thì lấy vùng dữ liệu từ B3:B10, Min là lấy số nhỏ nhất trong mảng thỏa điều kiện là {1;2;3;FALSE;FALSE;FALSE;FALSE;FALSE} tương đương số 1 nên ta ra Ninh Kiều tiếp đến lấy chính nó là B13 ghép (&) với 1 điều kiện tiếp theo nếu A1 lớn hơn vùng (đếm được là 3) thì ngưng, còn không sẽ tiếp tục lặp lại ở đây A1 đã chuyển sang là 2 và hàm lấy số nhỏ thứ 2 small(vùng,A1(tức là 2) rồi cứ liên tiếp đến khi đếm số giá trị lớn hơn A1 thì ngừng lại, đôi khi có lỗi nên dúng if(iserror()) để bẫy lỗi, nếu là excel 2007 trở lên chỉ cần iferror(công thức,"') là xong.
đây là công thức ngắn nếu là excel 2007 trở lên:
=IF($A$1=1,INDEX($B$3:$B$10,MIN(Vung)),B13&IF($A$1>COUNT(Vung),"",IFERROR(", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1)),"")))
:) Em gửi đến A/C triệu like
cám ơn thật nhiều
 
đây là toán Hồi Quy nghe nói thế tức là tự lặp lại chính mình:
tại sao không row từ A3:A11 vì từ A3:A11 sẽ ra 1 dãy số liên tiếp: {3;4;5;6;7;8;9;10;11} mà ở đây ta cần là 1 dãy liên tục từ 1 đến 8, để làm gì bạn xem hàm index chứ nó lấy từ B3:B11. INDEX($B$3:$B$10,SMALL(Vung,$A$1))).
Bạn đã hiểu hàm index chưa Index(vùng lấy dữ liệu, số dòng) nếu lấy số dòng theo số liên tiếp từ 3 trở đi sẽ sai đúng không.
A1 là Mod(A1,100)+1 thì mình cũng chịu nhưng nó sẽ tạo ra 1 số vòng lặp liên tục từ 1 đến 100 nhưng ta không thấy được
đã nói là tạo 1 số liên tục từ 1 đến 100 nên công thức sẽ thành thế này:
Nếu A1=1 thì lấy vùng dữ liệu từ B3:B10, Min là lấy số nhỏ nhất trong mảng thỏa điều kiện là {1;2;3;FALSE;FALSE;FALSE;FALSE;FALSE} tương đương số 1 nên ta ra Ninh Kiều tiếp đến lấy chính nó là B13 ghép (&) với 1 điều kiện tiếp theo nếu A1 lớn hơn vùng (đếm được là 3) thì ngưng, còn không sẽ tiếp tục lặp lại ở đây A1 đã chuyển sang là 2 và hàm lấy số nhỏ thứ 2 small(vùng,A1(tức là 2) rồi cứ liên tiếp đến khi đếm số giá trị lớn hơn A1 thì ngừng lại, đôi khi có lỗi nên dúng if(iserror()) để bẫy lỗi, nếu là excel 2007 trở lên chỉ cần iferror(công thức,"') là xong.
đây là công thức ngắn nếu là excel 2007 trở lên:
=IF($A$1=1,INDEX($B$3:$B$10,MIN(Vung)),B13&IF($A$1>COUNT(Vung),"",IFERROR(", "&INDEX($B$3:$B$10,SMALL(Vung,$A$1)),"")))
Dạo này anh lên tay ghê quá!! :D:D:D!!!
 
Thêm cái SUBSTITUTE là được chứ gì!!!
=SUBSTITUTE(IF($A$1=1,"",B13&IFERROR(INDEX($B$3:$B$10,SMALL(IF($A$3:$A$10=A13,ROW($A$1:$A$8)),$A$1-1))&",","")),",","",COUNTIF($A$3:$A$10,A13))
mình cũng nghĩ tới rồi =_= thế để 1 cái min cho đẹp khà khà, mà cũng có thể đổi thành dấu . Haha
 
Thêm cái SUBSTITUTE là được chứ gì!!!
=SUBSTITUTE(IF($A$1=1,"",B13&IFERROR(INDEX($B$3:$B$10,SMALL(IF($A$3:$A$10=A13,ROW($A$1:$A$8)),$A$1-1))&",","")),",","",COUNTIF($A$3:$A$10,A13))
Sao cách này không được nhỉ??
PHP:
=MID(IF($A$1=1,"",B13&IFERROR(" ,"&INDEX($B$3:$B$10,SMALL(IF($A$3:$A$10=A13,ROW($A$1:$A$8)),$A$1-1)),"")),3,255)
 
Thêm cái SUBSTITUTE là được chứ gì!!!
=SUBSTITUTE(IF($A$1=1,"",B13&IFERROR(INDEX($B$3:$B$10,SMALL(IF($A$3:$A$10=A13,ROW($A$1:$A$8)),$A$1-1))&",","")),",","",COUNTIF($A$3:$A$10,A13))
Nghĩ ra cách mới haha:
=SUBSTITUTE(IF(A$1=1," ",B13&IFERROR(", "&INDEX(B$3:B$10,SMALL(IF(A$3:A$10=A13,ROW($1:$8)),A$1-1)),""))," , ","")
 
Lần chỉnh sửa cuối:
@quocgiacan sao em dùng mid không ra vậy anh, hay tại nó lặp lại ??
 

Bài viết mới nhất

Back
Top Bottom