Để cung cấp cho bạn một yêu cầu chi tiết, tôi muốn có một phương thức hợp nhất, phương thức này sẽ lấy một dải ô làm đầu vào, xác định xem có ô nào đã được hợp nhất chưa [nếu có], sau đó tìm dải ô đã hợp nhất từ ô và hủy hợp nhất và hợp nhất nó
Bạn có thể giúp tôi với mã nguồn thực hiện điều này - mặc dù trong C# không?
Mã giả bên dưới -
void OverloadedMerge[Phạm vi mục tiêuMergeRange]
{
-- Lặp lại và kiểm tra xem có bất kỳ ô nào được hợp nhất không
--- nếu có, hủy hợp nhất phạm vi ô đã được hợp nhất
--- thực hiện hành động này để toàn bộ targetMergeRange không có hợp nhất nội bộ
-- Thực hiện targetMergeRange bắt buộc
}
Cảm ơn
Cảm ơn vì sự trả lời. làm cách nào để kiểm tra xem một phạm vi có được hợp nhất hay không?
giả sử tôi có một phương thức và tôi nhận được một phạm vi làm tham số
void testmethod[Phạm vi]
{
nếu [phạm vi. [????? được hợp nhất]{
phạm vi. unMerge[];
}
}
Thay vì tạo hai lần hợp nhất, vấn đề của tôi là phạm vi đầu tiên đã được hợp nhất và tôi muốn tự động xóa phạm vi đầu tiên [r1] và thêm r2 để nó không đưa ra bất kỳ ngoại lệ nào. xin lưu ý rằng tôi không biết kích thước của r1
Vì vậy, tôi nên lặp qua tất cả các phạm vi trong trang tính và tìm hiểu xem phạm vi đó có giao với phạm vi mới hiện tại của tôi hay không, đồng thời kiểm tra xem phạm vi trước đó có các ô được hợp nhất hay không và nếu có thì hãy thêm phạm vi mới [r2] vào ví dụ này
một số mã tôi đã viết dựa trên đề xuất của bạn và nó không hoạt động. Ở đây, formatRange là tham số đi kèm với phương thức này
for [int rangeCount = 0; rangeCount < ReportCells. Các dãy. Đếm;
{
nếu [định dạngPhạm vi. IsIntersect[ReportCells. Phạm vi[rangeCount]]]
{
// Nên xác thực xem ReportCells. Phạm vi [rangeCount] được hợp nhất? . để nó không hạn chế hợp nhất phạm vi mới - ĐANG CHỜ
// Tôi không thấy lý do để kết hợp hai phạm vi này. bởi vì các ô báo cáo. phạm vi tiếp tục tăng trong khi gỡ lỗi vòng lặp
danh sách = formatRange. Liên minh [Báo cáoCells. Phạm vi [rangeCount]];
foreach [Phạm vi phạm vi trong danh sách]
{
nếu [phạm vi. = không]
// Yêu cầu của tôi là hủy hợp nhất phạm vi trước đó để phạm vi mới hoạt động
phạm vi. UnMerge[];
}
}
}
Yellow one – merge range 1 [E5:F5]
Màu đỏ – hợp nhất phạm vi 2[E6. H6]
Đã đính kèm bảng tính đã hợp nhất và cả ảnh chụp màn hình
Giả sử, tôi muốn hợp nhất giữa E4. F8, tôi muốn tự động loại bỏ hợp nhất màu vàng và hợp nhất màu đỏ để hợp nhất cho E4. F8 hoạt động. Trong trường hợp này, tôi biết rằng chúng tôi chỉ có hai sự hợp nhất xung đột, nhưng trong trường hợp của tôi, có thể có nhiều sự hợp nhất xung đột và tôi phải xác định nó một cách linh hoạt và giải quyết nó
Nếu bạn làm vba nó sẽ hoạt động tốt. Mã được đánh dấu màu đỏ sẽ hoạt động tốt
Mã vba như sau –
Macro phụ1[]
'
' Vĩ mô1 Vĩ mô
'
'
Với lựa chọn
Căn ngang = xlCenter
Căn dọc = xlBottom
WrapText = Sai
Định hướng = 0
AddIndent = Sai
Mức thụt lề = 0
ShrinkToFit = Sai
ReadingOrder = xlContext
Hợp nhấtCells = Sai
Kết thúc với
Lựa chọn. hợp nhất
Phạm vi ["E6. H6"]. Lựa chọn
Với lựa chọn
Căn ngang = xlCenter
Căn dọc = xlBottom
WrapText = Sai
Định hướng = 0
AddIndent = Sai
Mức thụt lề = 0
ShrinkToFit = Sai
ReadingOrder = xlContext
Hợp nhấtCells = Sai
Kết thúc với
Lựa chọn. hợp nhất
Phạm vi ["C5. F5"]. Lựa chọn
Với lựa chọn. Nội địa
Hoa văn = xlSolid
PatternColor Index = xlAutomatic
Màu = 65535
TintAndShade = 0
MẫuTintAndShade = 0
Kết thúc với
Phạm vi ["E6. H6"]. Lựa chọn
Với lựa chọn. Nội địa
Hoa văn = xlSolid
PatternColor Index = xlAutomatic
Màu = 255
TintAndShade = 0
MẫuTintAndShade = 0
Kết thúc với
Phạm vi ["E4. F8"]. Lựa chọn
Với lựa chọn
Căn ngang = xlCenter
Căn dọc = xlBottom
WrapText = Sai
Định hướng = 0
AddIndent = Sai
Mức thụt lề = 0
ShrinkToFit = Sai
ReadingOrder = xlContext
Hợp nhấtCells = Sai
Kết thúc với
Lựa chọn. hợp nhất
kết thúc phụ
mã C# –
công khai ReportFormatter[ chuỗi tệp]
{
Báo cáo Sổ làm việc = mới Sổ làm việc [tệp];
ReportWorksheet = ReportWorkbook. Trang tính[ "Trang tính 1" ];
ReportCells = ReportWorksheet. Tế bào;
}
công khai vô hiệu FormatMethod[]
{
Phạm vi mergeRange = ReportCells. CreateRange[ "E4" , "F8" ];
hợp nhấtPhạm vi. Hợp nhất [];
Báo cáo Sổ làm việc. Lưu[ "C. \bóng đèn tròn. xls" ];
}
Xin lưu ý rằng cách giải quyết mẫu trước đây của bạn dựa trên ô trước đó và bạn kiểm tra xem nó có được hợp nhất không