Xin giúp vẽ trên cùng đồ thị từ nhiều vùng dữ liệu khác nhau

Liên hệ QC

coiha

Thành viên mới
Tham gia
27/11/14
Bài viết
28
Được thích
6
Chào mọi người
Mình có 1 file vẽ đồ thị, trên mỗi sheet là 1đồ thị
Để mở các sheet, mình dùng 1 Userform tương tự như UsfVidu
Mình mong muốn là chỉ dùng 1 sheet, trong đó sẽ vẽ được đồ thị của tất cả các nhóm
Ví dụ:
Mình muốn xem nhóm A thì chọn nhóm A và sheet "GOPCHUNG" nào đó sẽ có được đồ thị giống như ở sheet "NHOMA"
Sau đó mình muốn xem tiếp nhóm X thì tương tự, ở sheet "GOPCHUNG" là đồ thị của nhóm X (đồ thị của nhóm A trước đó sẽ mất hay xóa đi)
Theo ý nôm na là xem nhu các nhóm cùng sử dụng chung 1 đồ thị và tùy vào điều kiện mà thay đổi max của trục tung
Mục đich chính của mình là mong muốn giảm dung lượng file bằng cách giảm đi số lượng các sheet; KHi xem thì chọn là cón, khi hết xem đồ thị, thoát ra thì đồ thị cũng không còn.
Hy vọng được mọi người giúp đỡ.
 

File đính kèm

  • Dothi.xlsm
    36.5 KB · Đọc: 48
Chào mọi người
Mình có 1 file vẽ đồ thị, trên mỗi sheet là 1đồ thị
Để mở các sheet, mình dùng 1 Userform tương tự như UsfVidu
Mình mong muốn là chỉ dùng 1 sheet, trong đó sẽ vẽ được đồ thị của tất cả các nhóm
Ví dụ:
Mình muốn xem nhóm A thì chọn nhóm A và sheet "GOPCHUNG" nào đó sẽ có được đồ thị giống như ở sheet "NHOMA"
Sau đó mình muốn xem tiếp nhóm X thì tương tự, ở sheet "GOPCHUNG" là đồ thị của nhóm X (đồ thị của nhóm A trước đó sẽ mất hay xóa đi)
Theo ý nôm na là xem nhu các nhóm cùng sử dụng chung 1 đồ thị và tùy vào điều kiện mà thay đổi max của trục tung
Mục đich chính của mình là mong muốn giảm dung lượng file bằng cách giảm đi số lượng các sheet; KHi xem thì chọn là cón, khi hết xem đồ thị, thoát ra thì đồ thị cũng không còn.
Hy vọng được mọi người giúp đỡ.

Tôi thắc mắc: Bạn dùng UserForm để làm gì? Không lý nào chỉ để "nhảy tới nhảy lui" giữa các sheet?
Vậy thôi đề xuất:
- Hoặc là không dùng UserForm, ta sẽ chọn lựa các biểu đồ bằng 1 ComboBox
- Hoặc là sẽ dùng UserForm và vẽ biểu đồ trên UserForm luôn
Bạn thấy sao?
 
Cảm ơn bac ndu96081631 đã quan tâm.
Vì tôi mới chập chững tự học VBA nên chỉ đủ khả năng "nhảy tới nhảy lui" giữa các sheet thôi hà.
Hai đề xuất của bác rất hợp lý, hy vọng bác giúp cho đề xuất 1 nha.
(Nói thật lòng, tôi cũng muốn biết cả hai cách như thế nào để học hỏi thêm, nhưng ngại mọi người bảo minh "tham lam" -\\/.)
 
Cảm ơn bac ndu96081631 đã quan tâm.
Vì tôi mới chập chững tự học VBA nên chỉ đủ khả năng "nhảy tới nhảy lui" giữa các sheet thôi hà.
Hai đề xuất của bác rất hợp lý, hy vọng bác giúp cho đề xuất 1 nha.
(Nói thật lòng, tôi cũng muốn biết cả hai cách như thế nào để học hỏi thêm, nhưng ngại mọi người bảo minh "tham lam" -\\/.)

Bạn tải file về tham khảo nhé! Bài này tôi dùng name động nên chỉ cần 1 Sheet GOPCHUNG là có thể hiện thị các loại biểu đồ (bạn bấm Ctrl + F3 để biết các name ấy được thiết lập thế nào nhé)
Cách dùng: Chọn Validation List từ cell B1, biểu đồ sẽ thay đổi
-----------------
Ngoài ra, hãy tham khảo topic này:
http://www.giaiphapexcel.com/forum/showthread.php?7598-Tạo-biểu-đồ-động-đơn-giãn&highlight=
Có liên quan đến việc tạo một biểu đồ động đơn giản
 

File đính kèm

  • Dothi.xlsm
    24.1 KB · Đọc: 158
Lần chỉnh sửa cuối:
File và liên kết đính kèm của bác rất tuyệt đối với tôi. Tôi sẽ vận dụng cho số liệu của mình. Cảm ơn bác nhiều nhiều.
A xin lỗi, bác xem và giúp tí nữa nha. Nếu như mình muốn khi đồ thị hiện lên kèm theo là dòng tiêu đề thì làm thế nào vậy bác. Ví dụ: Khi chọn nhóm A thì sẽ có tiêu đề là “ BIỂU ĐỒ NHÓM A”.
 
A xin lỗi, bác xem và giúp tí nữa nha. Nếu như mình muốn khi đồ thị hiện lên kèm theo là dòng tiêu đề thì làm thế nào vậy bác. Ví dụ: Khi chọn nhóm A thì sẽ có tiêu đề là “ BIỂU ĐỒ NHÓM A”.

Rất đơn giản, chỉ cần link Chart Title với một cell nào đó là được
Mở file và khám phá nhé
 

File đính kèm

  • Dothi.xlsm
    24.6 KB · Đọc: 91
Ồ, rất cảm ơn bác.
Tôi có tí thắc mắc trưa giờ mà sẵn tiện đây hỏi bác luôn. Trong file thấy chữ "NHÓM" trong data validation mà không biết là "em" từ đâu tới vì vào data calidation chỉ thấy chữ A, X, M.. mà không thấy ẻm "NHÓM" này. Bí quá nên thắc mắc, mong mọi người đừng ném đá em nha.
 
Ồ, rất cảm ơn bác.
Tôi có tí thắc mắc trưa giờ mà sẵn tiện đây hỏi bác luôn. Trong file thấy chữ "NHÓM" trong data validation mà không biết là "em" từ đâu tới vì vào data calidation chỉ thấy chữ A, X, M.. mà không thấy ẻm "NHÓM" này. Bí quá nên thắc mắc, mong mọi người đừng ném đá em nha.

Custom Format thôi bạn à!
Click phải vào cell B1, chọn Format Cells sẽ thấy liền

Capture.JPG


































Giá trị một đàng nhưng nhìn thấy một nẻo. Cũng như: CÁI MÀ TA NHÌN THẤY CHƯA CHẮC ĐÃ LÀ THẬT
Vậy đấy! Ẹc... Ẹc...
 
Vâng, đúng là "cái mà ta nhìn thấy chưa chắc đã là thật". Bác nói chí lí quá. Cảm ơn sự tận tình của bác.
 
Xin lỗi bác ndu96081631,
Hổm rày tôi đã thử tìm trên diễn đàn nhưng hình như chưa có topic nào chỉ cách vẽ đồ thị trên Userform cả. Tôi đang rất muốn biết thêm về cách này. Hy vọng bác không phiền mà chỉ giáo thêm. Cảm ơn
 
Xin lỗi bác ndu96081631,
Hổm rày tôi đã thử tìm trên diễn đàn nhưng hình như chưa có topic nào chỉ cách vẽ đồ thị trên Userform cả. Tôi đang rất muốn biết thêm về cách này. Hy vọng bác không phiền mà chỉ giáo thêm. Cảm ơn

Biểu đồ trên UserForm hơi khó chút. Cách tôi làm (và tôi nghĩ là đơn giản nhất) là:
- Vẫn vẽ biểu đồ trên sheet (vẽ âm thầm)
- Chụp hình biểu đồ đã vẽ và "quăng" lên UserForm
Điều này có nghĩa là: Cái biểu đồ ta nhìn thấy trên UserForm thực chất chỉ là cái hình
Tải file ví dụ về xem thử
Áp dụng vào file của bạn cũng làm tương tự
-------------------
Tham khảo topic này:
http://www.giaiphapexcel.com/forum/showthread.php?81415-Biểu-đồ-trên-UserForm
 

File đính kèm

  • ChartOnForm.xlsm
    34.7 KB · Đọc: 35
Lần chỉnh sửa cuối:
Ồ, tôi mới tìm được một trang có hướng dẫn về cách này www.homeandlearn.org. Tôi đang thử. Nếu có gì không hiểu, tôi hy vọng đưa lên diễn đàn sẽ được các bác tận tình giúp đỡ.
 
Hihi, topic tham khảo của bác nằm ở chỗ nào mà em tìm mỏi mắt cũng không ra, đến khi bác chỉ mới thấy+-+-+-+. Chân thành cảm ơn.
 
Tôi bí chỗ này, gửi file lên đây mong các bác chỉ giúp.
Tôi "quăng" cái đồ thị lên thì không được, tôi nghĩ bị lỗi ở chỗ đường dẫn này:
imageName = Application.DefaultFilePath & Application.PathSeparator & "bt.gif"
Tôi thật tình không biết gã file gif này lưu ở đâu nữa vì theo đường dẫn với câu lệnh trên tìm hoài không thấy. Hic.
 

File đính kèm

  • bt1.xlsm
    28.4 KB · Đọc: 7
Tôi bí chỗ này, gửi file lên đây mong các bác chỉ giúp.
Tôi "quăng" cái đồ thị lên thì không được, tôi nghĩ bị lỗi ở chỗ đường dẫn này:
imageName = Application.DefaultFilePath & Application.PathSeparator & "bt.gif"
Tôi thật tình không biết gã file gif này lưu ở đâu nữa vì theo đường dẫn với câu lệnh trên tìm hoài không thấy. Hic.

Code sai vài chỗ! Toàn bộ code thế này:
Mã:
Private Sub CommandButton1_Click()
'MsgBox " i  " & Application.DefaultFilePath
  If ComboBox1.Text = [COLOR=#ff0000]" Select a chart"[/COLOR] Then
    MsgBox "Hay lua chon do thi"
  End If
  [COLOR=#ff0000]Exit Sub[/COLOR]
  Dim mychart As Chart
  Dim chartdata As Range
  Dim chartindex As Integer
  Dim chartname As String

  chartindex = ComboBox1.ListIndex
  [COLOR=#0000cd]Select Case chartindex
    Case 0
      Set chartdata = Sheet1.Range("b1:b20")
      chartname = Sheet1.Range("b1")
    Case 1
      Set chartdata = Sheet1.Range("c1:c20")
      chartname = Sheet1.Range("c1")
    Case 2
      Set chartdata = Sheet1.Range("d1:d20")
      chartname = Sheet1.Range("d1")
    Case 3
      Set chartdata = Sheet1.Range("e1:e20")
      chartname = Sheet1.Range("e1")
  End Select[/COLOR]
  Application.ScreenUpdating = False

  Set mychart = Sheet1.Shapes.AddChart(xlXYScatterLines).Chart
  mychart.SeriesCollection.NewSeries
  mychart.SeriesCollection(1).Name = chartname
  mychart.SeriesCollection(1).Values = chartdata
  mychart.SeriesCollection(1).XValues = Sheet1.Range("a1:a20")

  Dim imageName As String
  imageName =[COLOR=#ff0000] Application.DefaultFilePath & Application.PathSeparator & "bt.gif"[/COLOR]

  mychart.Export Filename:=imageName

  Sheet1.ChartObjects(1).Delete

  Application.ScreenUpdating = True
  UserForm1.Image1.Picture = LoadPicture(imageName)
End Sub
Sửa thành vầy:
Mã:
Private Sub CommandButton1_Click()
  [COLOR=#a52a2a]On Error Resume Next[/COLOR]
  [COLOR=#a52a2a]Sheet1.ChartObjects.Delete[/COLOR]
  If ComboBox1.ListIndex < 0 Then
    MsgBox "Hay lua chon do thi"
    [COLOR=#ff0000]Exit Sub[/COLOR]  ''Exit Sub phải nằm trong lệnh IF
  End If
  Dim mychart As Chart
  Dim chartData As Range, chartValues As Range
  Dim chartIndex As Long
  Dim chartName As String, imageName As String

  chartIndex = ComboBox1.ListIndex[COLOR=#0000cd]
  Set chartValues = Sheet1.Range("A1:A20")
  Set chartData = chartValues.Offset(, chartIndex + 1)
  chartName = chartData(1, 1)[/COLOR]
  
  Application.ScreenUpdating = False
  Set mychart = Sheet1.Shapes.AddChart(xlXYScatterLines).Chart
  mychart.SeriesCollection.NewSeries
  mychart.SeriesCollection(1).Name = chartName
  mychart.SeriesCollection(1).Values = chartData
  mychart.SeriesCollection(1).XValues = [COLOR=#ff0000]chartValues[/COLOR]
  
  [COLOR=#ff0000]imageName = ThisWorkbook.Path & "\bt.gif"[/COLOR]
  mychart.Export Filename:=imageName
  Application.ScreenUpdating = True
  UserForm1.Image1.Picture = LoadPicture(imageName)
  [COLOR=#b22222]Kill imageName[/COLOR]
End Sub
- Chỗ màu đỏ: là chỗ tôi sửa lại
- Chỗ màu xanh: Tôi rút gọn lại
- Chỗ màu nâu: Tôi thêm vào
--------------------------------
Theo đánh giá của tôi: Cách vẽ đồ thị kiểu này không hay --> Mức độ tùy biến không cao
Đằng nào thì vẫn phải vẽ trên sheet (dù là dùng code để điều khiển). Vậy ta vẽ bằng tay lên sheet cho đúng ý (thật đẹp) rồi load lên UserForm sẽ hay hơn (đẹp hơn)
 
Lần chỉnh sửa cuối:
Rất cảm ơn bác đã giúp đỡ tận tình
Quả thực, tôi thấy cách của bác trong file ChartOnForm rất tuyệt. Sau khi thử thay đổi với Object khác, thật linh hoạt. (Nói bác đừng cười chứ tôi đọc hàm PictureFromObject như đang đi lạc giữa Đảo Đào Hoa, không biết đường đâu mà ra, "bí hiểm" quá xá!).
 
hinh.jpg
Nhân tiện, bác cho tôi hỏi thêm một tí. Khi vẽ biểu đồ xong, tôi lưu và ví dụ copy sang USB. Sau đó tôi mở file này từ USB thì hay bị tình trạng chỗ Series values không đúng mà không biết nguyên nhân vì đâu. Ví dụ ban đầu là baitap.xlsm!Cot1 sẽ chuyển thành [0]!Cot1 (tương tự như hình tôi chụp và đính kèm)
 
chào bác ndu96081631
đọc bài của bác em thấy rất hay.Em có 1 file excel này từ lâu rồi mà chưa làm được .Vậy mong bác giúp đỡ cho em
Em có rất nhiều mã sản phẩm.Giờ em muốn mỗi khi em filter 1 mã để nhập dữ liệu thì biểu đồ sẽ tự động chuyển sang mã đó.Nếu không thể thì có thể em nhấn filter để nhập dữ liệu.sau đó nhấn vào Ô B12 để chọn mã sản phẩm đó và biểu đồ có thể tự động chuyển qua mã mà em đã chọn.Em xin cảm ơn
 
Lần chỉnh sửa cuối:
Untitled.jpg

Cho e hỏi với, sao em cũng làm như vậy mà Excel lại không cho?
 

File đính kèm

  • Dothi.rar
    140.3 KB · Đọc: 5
Rất đơn giản, chỉ cần link Chart Title với một cell nào đó là được
Mở file và khám phá nhé
Chào thầy . Em có mục đích như bạn chủ topic nhưng cần thêm 1 cột so sánh và mở rộng phạm vi so sánh thì phải thay đổi công thức như thế nào ạh . Với kiến thức hạn hẹp về excel thì em chỉ làm được như trong file đính kèm .
 

File đính kèm

  • NMT kapacitet vs belastning 2018.xlsx
    29.9 KB · Đọc: 5
Web KT
Back
Top Bottom