Biểu diễn số đếm theo hình vẽ từ Shape (2 người xem)

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

Tôi tuân thủ nội quy khi đăng bài

Vũ Hải Sơn

Thành viên chính thức
Tham gia
12/10/18
Bài viết
72
Được thích
14
Nhờ các anh chị em trong diễn đàn hỗ trợ giúp ạ! Mình muốn biểu diễn các số đếm theo các hình vẽ như trong file mẫu để biểu diễn sô phiếu bầu trúng thông qua sheet quy ước. Hiện tại do cột B mình vẽ từ các shape nên không thể dùng hàm để truy suất được. Mong mọi người hỗ trợ. Mình xin cảm ơn ạ!
 

File đính kèm

Cái này giống đếm phiếu bầu cử nhỉ. :)
Bây giờ có nhiều áp nhập kết quả kiểm phiếu luôn rồi mà bạn.
 
Hình như ý bạn là biểu diễn hình vẽ theo số đếm mới đúng chứ? Nhập số vào ra hình. "Mình muốn biểu diễn các số đếm theo các hình vẽ" thì sẽ được hiểu là hình vẽ có trước, số sẽ theo hình.
Nếu như muốn hình theo số mà số lượng ít, tầm 20 đổ lại thì có thể dùng Vlook up. Lên Google tìm 1 trong các từ khoá sau: "Vlooup hình ảnh trong Excel", "Tìm kiếm bằng ảnh trong Excel"
 
Đúng là mình muốn từ các số ra hình. Ví dụ như trong hình ảnh đính kèm là biểu diễn của giá trị bằng 63. Nhưng giờ mình muốn thay các các quy ước như trong hình 4 bằng các nét gạch nối thẳng từ Shape như trong file quy ước mình gửi lúc đầu
 

File đính kèm

  • hình 3.png
    hình 3.png
    1.8 KB · Đọc: 11
  • hình 4.png
    hình 4.png
    3.8 KB · Đọc: 6
Sao không dùng kiểu tô mầu hoặc condictional formatting cho nó dễ. Lâu rồi không viết code VBA. Xem tạm file này nhé!
Cách dùng nhập số vào cột A, toàn bộ biểu diễn về Line thể hiện ở các cột sau
 

File đính kèm

Chủ thớt phải có qui ước gì thêm về dòng cột hiển thị chứ gặp ứng cử viên được bầu 700 phiếu thì nó dài sọc.
 
Nhờ các anh chị em trong diễn đàn hỗ trợ giúp ạ! Mình muốn biểu diễn các số đếm theo các hình vẽ như trong file mẫu để biểu diễn sô phiếu bầu trúng thông qua sheet quy ước. Hiện tại do cột B mình vẽ từ các shape nên không thể dùng hàm để truy suất được. Mong mọi người hỗ trợ. Mình xin cảm ơn ạ!
cái nay thì phải dùng code VBA thôi,
Bạn cần xác nhận lại xem số phiếu tối đa bao nhiêu - ví dụ 100 phiếu thì cái hình biểu diễn dài lắm đấy
 
Hay quá hè. Lẽ ra từ hình đếm ra số phiếu rồi ghi kết quả, còn đây làm ngược lại
 
Tôi nghĩ một cách khác là chỉ dùng 5 hình vẽ sẳn từ 1 đến 5. Sau đó tuỳ theo số nhập mà nhân bản hình 5 (shape.Duplicate) ra, còn phần lẻ sẽ chọn 1 trong 4 hình còn lại thêm vào cuối.
Cách này khỏi phải vẽ từng đoạn thẳng ghép vô.

Screenshot 2025-12-03 at 22.21.44.png
 
Lần chỉnh sửa cuối:
cái nay thì phải dùng code VBA thôi,
Bạn cần xác nhận lại xem số phiếu tối đa bao nhiêu - ví dụ 100 phiếu thì cái hình biểu diễn dài lắm đấy
Sheet quy ước chỉ là 1 sheet trong file thôi, mình có sheet tổng hợp những phiếu bầu trúng, sau đó căn cứ theo sheet quy ước để có 1 sheet tổng hợp số phiếu bầu trúng của từng người như hình 5 trong tệp đính kèm mình gửi chỉ khác là mình muốn hiển thị theo dạng đường thẳng truyền thống các cụ đã làm thay cho các nét "/" và chữ "x"
 

File đính kèm

  • hinh 5.png
    hinh 5.png
    8 KB · Đọc: 10
Sheet quy ước chỉ là 1 sheet trong file thôi, mình có sheet tổng hợp những phiếu bầu trúng, sau đó căn cứ theo sheet quy ước để có 1 sheet tổng hợp số phiếu bầu trúng của từng người như hình 5 trong tệp đính kèm mình gửi chỉ khác là mình muốn hiển thị theo dạng đường thẳng truyền thống các cụ đã làm thay cho các nét "/" và chữ "x"
Bạn nên tải file thực tế lên chứ file như bài #1 có khi làm xong bạn không sử dụng được trên file thực tế đâu.
 
Chưa thử, nhưng mà chắc là sẽ nhanh hơn của em vì của bác là copy cell không phải vẽ.
Tôi nghĩ một cách khác là chỉ dùng 5 hình vẽ sẳn từ 1 đến 5. Sau đó tuỳ theo số nhập mà nhân bản hình 5 (shape.Duplicate) ra, còn phần lẻ sẽ chọn 1 trong 4 hình còn lại thêm vào cuối.
Cách này khỏi phải vẽ từng đoạn thẳng ghép vô.

Mà thôi, chủ bài đăng không quan tâm lắm đâu
 
Chưa thử, nhưng mà chắc là sẽ nhanh hơn của em vì của bác là copy cell không phải vẽ.


Mà thôi, chủ bài đăng không quan tâm lắm đâu
Mình đang rất quan tâm và mong nhận được sự hỗ trợ bạn à. Cho mình hỏi thêm 5 hình vẽ sẵn như bạn nói là mình chèn từ ký tự hay mình vẫn phải vẽ từ shape sau đó ghép lại cho phù hợp để đưa ra các con số thế bạn?
 
Mình đang rất quan tâm và mong nhận được sự hỗ trợ bạn à. Cho mình hỏi thêm 5 hình vẽ sẵn như bạn nói là mình chèn từ ký tự hay mình vẫn phải vẽ từ shape sau đó ghép lại cho phù hợp để đưa ra các con số thế bạn?
XIn hỏi chủ bài đăng đã tải thử file mình làm và thử chưa? có vấn đề gì không từ đó mới tiếp tục câu chuyện được?
 
Sheet quy ước chỉ là 1 sheet trong file thôi, mình có sheet tổng hợp những phiếu bầu trúng, sau đó căn cứ theo sheet quy ước để có 1 sheet tổng hợp số phiếu bầu trúng của từng người như hình 5 trong tệp đính kèm mình gửi chỉ khác là mình muốn hiển thị theo dạng đường thẳng truyền thống các cụ đã làm thay cho các nét "/" và chữ "x"

Thử code này xem như thế nào nhé. Tôi chỉ biết tạo ra mấy cái shape này nhưng xoá nó thì chưa nghĩ ra cách :D.

 

File đính kèm

Lần chỉnh sửa cuối:
Thử code này xem như thế nào nhé. Tôi chỉ biết tạo ra mấy cái shape này nhưng xoá nó thì chưa nghĩ ra cách :D.

Tôi dùng đoạn code này thấy nó xóa được toàn bộ các Shape đã được tính số phiếu

Mã:
Sub Xoa()
Dim i&, t&, k&, n&, m&, p&
Dim Sha As Object
On Error Resume Next
For Each Sha In ActiveSheet.Shapes
Sha.Select
'MsgBox Sha.Name
If Sha.Name = "Group1" Then t = t + 1
If Sha.Name = "Group2" Then k = k + 1
If Sha.Name = "Group3" Then n = n + 1
If Sha.Name = "Group4" Then m = m + 1
If Sha.Name = "Group5" Then p = p + 1
If t > 1 Then Sha.Delete
If k > 1 Then Sha.Delete
If n > 1 Then Sha.Delete
If m > 1 Then Sha.Delete
If p > 1 Then Sha.Delete
Next Sha
End Sub
 
Tôi dùng đoạn code này thấy nó xóa được toàn bộ các Shape đã được tính số phiếu

Mã:
Sub Xoa()
Dim i&, t&, k&, n&, m&, p&
Dim Sha As Object
On Error Resume Next
For Each Sha In ActiveSheet.Shapes
Sha.Select
'MsgBox Sha.Name
If Sha.Name = "Group1" Then t = t + 1
If Sha.Name = "Group2" Then k = k + 1
If Sha.Name = "Group3" Then n = n + 1
If Sha.Name = "Group4" Then m = m + 1
If Sha.Name = "Group5" Then p = p + 1
If t > 1 Then Sha.Delete
If k > 1 Then Sha.Delete
If n > 1 Then Sha.Delete
If m > 1 Then Sha.Delete
If p > 1 Then Sha.Delete
Next Sha
End Sub
Dùng lệnh If Sha.Name Like "Group*" Then Sha.Delete cho đơn giản chứ nhỉ
 
Tôi chưa áp code bạn @HUONGHCKT vô nhưng tôi nghĩ nếu làm đúng bài là sẽ chủ động xoá số phiếu của từng ứng viên chứ không xoá chung.
 
Tôi chưa áp code bạn @HUONGHCKT vô nhưng tôi nghĩ nếu làm đúng bài là sẽ chủ động xoá số phiếu của từng ứng viên chứ không xoá chung.
Gợi ý cách xoá. Khi tạo shape hãy ghi lại tên shape hoặc tên group lưu vào chỗ nào đó trong sheet. Khi xoá thì tìm đến đúng chỗ đó lấy thông tin shape để xoá
 
Gợi ý cách xoá. Khi tạo shape hãy ghi lại tên shape hoặc tên group lưu vào chỗ nào đó trong sheet. Khi xoá thì tìm đến đúng chỗ đó lấy thông tin shape để xoá
Tôi nghĩ do cái thiết kế của chủ thớt cũng đã cố định số cột của mỗi ứng viên là 5 cột nên có thể chỉ định Cell bắt đầu để từ đó tính ra range cần xoá. Nhưng tôi không biết các thuộc tính của Range hay shape mà có thể từ range suy ra shape bên trong nó không?
 
Tôi nghĩ do cái thiết kế của chủ thớt cũng đã cố định số cột của mỗi ứng viên là 5 cột nên có thể chỉ định Cell bắt đầu để từ đó tính ra range cần xoá. Nhưng tôi không biết các thuộc tính của Range hay shape mà có thể từ range suy ra shape bên trong nó không?
Tôi thử thêm 2 dòng sau vào chỗ tương ứng trong code của bạn:
s5.Name = target.Offset(-1, 0) & "5"

sle.Name = target.Offset(-1, 0) & sole
với target.Offset(-1, 0) trỏ đến cell chứa tên ứng cử viên

Rồi sau đó viết sub XoaPhieu như sau
Mã:
Sub XoaPhieu()
    Dim sCell As Range, Shp As Shape, sName$

    Set sCell = Application.InputBox("Kich chon ô dau tiên chua ten ung cu vien", Type:=8)
    sName = sCell.Value
    For Each Shp In Sheet1.Shapes
        If Shp.Name Like sName & "*" Then Shp.Delete
    Next
End Sub
Cứ thấy các Group đúng tên ứng cử viên thì xoá dù cái đuôi của nó là con số nào
 
Cho mình hỏi thêm 5 hình vẽ sẵn như bạn nói là mình chèn từ ký tự hay mình vẫn phải vẽ từ shape sau đó ghép lại cho phù hợp để đưa ra các con số thế bạn?
Thớt nói như thế này tôi đoán là muốn hiển thị bằng ký tự.

432EzdP1IF-YtY2hcki2jAMAL25_HL3KfcWzXIB0C7NnhnODWX2NNgpXBxN4Dm9SGEdSfGhYkV9BJjC7QzoF33wqV-O9JqACjIfwfvBjlVo
 
Thớt nói như thế này tôi đoán là muốn hiển thị bằng ký tự.
Tại sắp đến bầu cử rồi nên nhìn file của chủ thớt tôi thấy giống những cái phiếu ghi kết quả kiểm phiếu thủ công trước đây. Các phiếu bầu được phân loại và chia thành 10 cho dễ đếm. Số ứng cử viên thường là 5 nên dàn hàng ngang là được. Có những điểm bầu cử số lượng phiếu lớn nên số phiếu mỗi người có thể lên đến con số 500, 1000...
 
Đó là ký tự chứ không phải shape đâu bạn.
Nếu là ký tự thì quá hay rồi. Không cần xử lý nhiều như shape. Trước tôi chỉ biết xài có font Marlet cho một số icon, còn biểu tượng này thì thua.

Tôi bổ sung code này để xoá shape:

JavaScript:
Sub XoaShape()
    On Error GoTo EH
    
    Dim sCell As Range, shp As Shape, col As Long
    Set sCell = Application.InputBox("Kich chon ô dâu tiên chua ten Ung Cu Vien", "Chon ô", Type:=8)
    col = sCell.Column
    
    For Each shp In ThisWorkbook.Sheets("KiemPhieu").Shapes
        If shp.TopLeftCell.Column >= col And shp.TopLeftCell.Column <= col + 4 Then shp.Delete
    Next
EH:
    Exit Sub
    
End Sub
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom