Cảm ơn rất nhiều Markus vì đã tìm ra giải pháp cho điều này.
Dưới đây là một số hướng dẫn chi tiết hơn một chút về lợi ích của những người mới sử dụng OpenOffice Basic như tôi. Này áp dụng cho phiên bản 3.1:
Tools -> Macro -> Sắp xếp Macros -> OpenOffice.org Basic ...
Bây giờ chọn từ cây nhà thám hiểm nơi bạn muốn chức năng của bạn trực tiếp, ví dụ nó có thể nằm trong thư viện macro của riêng bạn (My Macros/Standard) hoặc được lưu trữ trực tiếp trong bảng tính hiện tại.
Bây giờ hãy nhập tên Macro mới và nhấp vào Mới để mở OO.org Basic IDE. Bạn sẽ thấy câu lệnh REM và một số định nghĩa phụ. Xóa tất cả những gì và thay thế nó với :
Function STRJOIN(range, Optional delimiter As String, Optional before As String, Optional after As String)
Dim row, col As Integer
Dim result, cell As String
result = ""
If IsMissing(delimiter) Then
delimiter = ","
End If
If IsMissing(before) Then
before = ""
End If
If IsMissing(after) Then
after = ""
End If
If NOT IsMissing(range) Then
If NOT IsArray(range) Then
result = before & range & after
Else
For row = LBound(range, 1) To UBound(range, 1)
For col = LBound(range, 2) To UBound(range, 2)
cell = range(row, col)
If cell <> 0 AND Len(Trim(cell)) <> 0 Then
If result <> "" Then
result = result & delimiter
End If
result = result & before & range(row, col) & after
End If
Next
Next
End If
End If
STRJOIN = result
End Function
Đoạn mã trên có một số cải tiến nhẹ từ Markus' gốc:
Không bắt đầu với một dấu phân cách khi ô đầu tiên trong phạm vi là trống.
Cho phép lựa chọn tùy chọn dấu phân tách (mặc định là ",") và các chuỗi trước và sau mỗi mục nhập không trống trong phạm vi (mặc định là "").
Tôi đổi tên thành STRJOIN vì "tham gia" là tên thông thường của chức năng này bằng một số ngôn ngữ phổ biến, chẳng hạn như Perl, Python và Ruby.
biến tất cả chữ thường
Bây giờ lưu vĩ mô, đi vào ô nơi bạn muốn tham gia xuất hiện, và gõ:
=STRJOIN(C3:C50)
thay C3: C50 với phạm vi các chuỗi bạn muốn tham gia.
Để tùy chỉnh các dấu phân cách, thay vì sử dụng một cái gì đó như:
=STRJOIN(C3:C50; "/")
Nếu bạn muốn tham gia vào một loạt các địa chỉ email, bạn có thể sử dụng:
=STRJOIN(C3:C50; ", "; "<"; ">")
và kết quả sẽ là một cái gì đó như
<[email protected]>, <[email protected]>, <[email protected]>, <[email protected]>
Điều này sẽ nhận được phản hồi tốt hơn trên Super User. Bạn không cần phải đăng lại ở đó vì câu hỏi sẽ được chuyển tự động. – ChrisF
Ồ, wow, tôi thậm chí không biết người dùng siêu tồn tại. Cảm ơn! –