Giúp Em công thức này với...

Liên hệ QC

trananhtommy

Thành viên hoạt động
Tham gia
11/12/06
Bài viết
111
Được thích
6
Chào các Bác trong diễn đàn

Em có một vấn đề trong sử dụng Exel mà tìm mãi chưa biết cách giải quyết, xin được gửi lên đây và xin các Bác có kinh nghiệm vậy..:

Em có một bảng tính, đơn giản nếu Ô A1="bóng", Ô A2="vợt", Ô A3="tennis" thì khi cần thể hiện nội dung ở 1 Ô B1, Em đặt công thức: B1=A1&A2&A3 như vậy Ô B1 sẽ có giá trị là: B1="bóngvợttennis".

Tuy nhiên, theo yêu cầu công việc của Em, bảng tính không chi có 3 tham chiếu A1 đến A3 à là A1 đến A40000 cơ, như vậy không thể đặt công thức thủ công như trên được. Em loay hoay mãi mà chưa tìm được câu trả lời. Tất nhiên tình huống nếu trên là mô tả đặc trưng công thức cần sử dụng để ứng dụng vào công việc đặt hàm của em.

Vậy xin các Bác trong diễn đàn có kinh nghiệm chỉ giáo giúp, Em chân thành cảm ơn...!
 
Tuy nhiên, theo yêu cầu công việc của Em, bảng tính không chi có 3 tham chiếu A1 đến A3 à là A1 đến A40000 cơ
Bạn thực hiện đoạn code sau:
Mã:
Option Explicit
Public Function concatenate_2(rngData As Range)
Dim strText As String, val_1
For Each val_1 In rngData
    strText = strText & val_1
Next
concatenate_2 = strText
End Function
 
Cảm ơn bác NVS, nhưngquả thực nối 40.000 cell lại thì hơi bị khủng. Mình rất tò mò xem file của bạn là gì vậy ? Có thể up lên cho mọi người xem được không ?
 
Bạn Hiếu này !
Người ta có ý rêing của người ta mà.
Tôi đoán là nối các chữ lại trong việc đọc số thành chữ dùng dạng thủ công đó mà.


PS:Bạn Hiếu có nhận được lời nhắn của mình bên WKT không?
 
Không phải đâu Bạn à.

Thực ra là mình cũng không biết exel nhiều lắm, công việc của mình là kế toán, mỗi ngày có khoảng hơn 200 dữ liệu thêm vào bảng tính, như vậy minh phải đặt tham chiếu cho ô nội dung cho 1 năm đó trong bảng tính, vì vậy tham chiếu tới 40.000 ô là bình thường thôi. Tất nhiên Ô trả kết quả chi thể hiện khoảng 200 nội dung thống kê theo điều kiện lọc báo cáo ngày của mình thôi chứ không phải thể hiện hết 40.000 ô đâu hihi

Dù sao cũng cảm ơn Bác nvson và các bạn quan tâm đến vấn đề này và trợ giúp.

Xin được hỏi thêm bác nvson là muốn sử dụng concatenate_2 trên với 1 điều kiện nữa có được không nhỉ? Như hàm sumif ấy, nếu được thì Bác giúp luôn với nhé. Em cảm ơn!
 
Thien đã viết:
Bạn Hiếu này !
Người ta có ý rêing của người ta mà.
Tôi đoán là nối các chữ lại trong việc đọc số thành chữ dùng dạng thủ công đó mà.


PS:Bạn Hiếu có nhận được lời nhắn của mình bên WKT không?

Có nhận được nhưng mình muốn nó hoàn thanh rồi mới đưa cho mọi người. Chứ chỉ được phần nào, mọi người dùng nếu có gì xảy ra thì lại bị "chửi" thì quê lắm. Không biết như vậy có được không ?
 
Xin được hỏi thêm bác nvson là muốn sử dụng concatenate_2 trên với 1 điều kiện nữa có được không nhỉ? Như hàm sumif ấy, nếu được thì Bác giúp luôn với nhé. Em cảm ơn!
Bạn thử code sau xem:
Mã:
Option Explicit
Public Function Con_3(rngData As Range, dieukien, rngData2 As Range) As String
Dim i As Long, j As Long
Dim strText As String
For i = 1 To rngData.Rows.Count
    For j = 1 To rngData.Columns.Count
        If rngData.Cells(i, j) = dieukien Then strText = strText & rngData2.Cells(i, j)
    Next j
Next i
Con_3 = strText
End Function
 
Cũng như bạn trananhtommy, tôi có bảng tính : Ô B1= "=", Ô C1="Sum", Ô D1="(", Ô E1=”A1”, Ô F1=”:”, G1=”A10”, Ô H1=”)”. Tôi đạt công thức tại Ô I1= b1&c1&d1&e1&f1&g1&h1. Như vậy Ô I1 sẽ có giá trị là: "=sum(a1:a10)". Các bạn có thể giúp tôi chuyển Ô I1 trở thành hàm được không. Vì công việc, tôi cần có hàng trăm hàm như trên, nhưng khi muốn thay đổi thì chỉ cần thay đổi ở Ô E1 và Ô G1 mà thôi.
Vậy xin các Bạn trong diễn đàn có kinh nghiệm chỉ giúp, Xin chân thành cảm ơn.
 
mymichau đã viết:
Cũng như bạn trananhtommy, tôi có bảng tính : Ô B1= "=", Ô C1="Sum", Ô D1="(", Ô E1=”A1”, Ô F1=”:”, G1=”A10”, Ô H1=”)”. Tôi đạt công thức tại Ô I1= b1&c1&d1&e1&f1&g1&h1. Như vậy Ô I1 sẽ có giá trị là: "=sum(a1:a10)". Các bạn có thể giúp tôi chuyển Ô I1 trở thành hàm được không. Vì công việc, tôi cần có hàng trăm hàm như trên, nhưng khi muốn thay đổi thì chỉ cần thay đổi ở Ô E1 và Ô G1 mà thôi.
Vậy xin các Bạn trong diễn đàn có kinh nghiệm chỉ giúp, Xin chân thành cảm ơn.
Bạn đặt : I1=indirect(b1&c1&d1&e1&f1&g1&h1) thì sẽ cho kết quả ngay.
Bạn có thể tham khảo ở :
http://www.giaiphapexcel.com/forum/showthread.php?t=1029&highlight=indirect
http://www.giaiphapexcel.com/forum/showthread.php?t=441&highlight=indirect
Thân !
 
Bạn thử code sau nhé!
Mã:
Option Explicit
Public Sub Formula_Concatenate()
Dim rngdata As Range
Dim i As Long, j As Long
Dim strText As String
Set rngdata = Selection
For i = 1 To rngdata.Rows.Count
    For j = 1 To rngdata.Columns.Count
        If Not IsEmpty(rngdata.Cells(i, j)) Then strText = strText & rngdata.Cells(i, j)
    Next j
    rngdata.Cells(i, rngdata.Columns.Count + 1).Formula = strText
Next i
End Sub
Cách sử dụng:
Chọn toàn bộ vùng văn bản (từ ô B1 đến cột cuối cùng chứa giá trị, dòng bất kỳ) rồi chạy macro trên.
Vì bạn có rất nhiều hàm (nhiều dòng!?) và số lượng cột của mỗi hàm là khác nhau nên bạn cứ chọn đến cột ngoài cùng, do vậy mà sẽ có công thức một số cột cuối cùng là các ô trống --> Không sao, bạn cứ chọn hết là được.
 

File đính kèm

  • Noi_Congthuc002.rar
    149.6 KB · Đọc: 56
@mymichau
Bạn có thể dùng table để làm cái bạn muốn ở trên
or Công thức mảng (nếu là range liên tục....). Vui
 
Web KT
Back
Top Bottom