summerhq2006
Thành viên hoạt động



- Tham gia
- 4/3/08
- Bài viết
- 112
- Được thích
- 88
Em có một bảng gồm chi phí và lãi/lỗ. Nếu kết quả lãi thì biểu đồ thể hiện là biểu đồ hình tròn, ngược lại thì là biểu đồ hình cột. (Giống như hàm if ý). Các bác có thể chỉ cho em cách làm được không ah? Em gửi file đính kèm!
Sub DoThi01()
On Error Resume Next
ActiveWorkbook.Charts.Delete
Range("A1:F2").Select
Charts.Add
ActiveChart.ChartType = xl3DPie
ActiveChart.SetSourceData Source:=Sheets("Sheet2").Range("A1:F2"), PlotBy:= _
xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet2"
ActiveSheet.Shapes("Chart 2").IncrementLeft -162#
ActiveSheet.Shapes("Chart 2").IncrementTop -54.75
ActiveChart.SeriesCollection(1).Select
Selection.Explosion = 9
End Sub
' * * * * * * * * '
Sub DoThi02()
On Error Resume Next
ActiveWorkbook.Charts.Delete
Range("A1:F2").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet2").Range("A1:F2"), PlotBy:= _
xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet2"
ActiveSheet.Shapes("Chart 3").IncrementLeft 124.5
ActiveSheet.Shapes("Chart 3").IncrementTop -45#
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [f2]) Is Nothing Then _
If Target < 0 Then DoThi02 Else DoThi01
End Sub
Em không nghĩ như vậy, mà em nghĩ như sau: Nếu vận tốc > 5km/h thì người đó đang đi với tốc độ của ôtô, nếu vận tốc <5 km/h thì người đó đang đi với tốc độ của người đi bộ)
- Theo mình nghĩ thì điều này là không tưởng nếu chỉ dùng công thức và vẽ biểu đồ theo cách thông thường (có thể ví như: 1 người đi trên đường. Nếu vận tốc > 5km/h thì người đó đang đi bằng ôtô, nếu vận tốc <5 km/h thì người đó đang đi bộ)
* Bạn viết thế này, lỡ AnhTuan1066 đi công tác xa cả tháng, chắc bạn cũng đợi ư?Bạn AnhTuan1066 ơi giúp mình vẽ cái biểu đồ này với.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim Rng As Range, Clls As Range
Set Rng = Range("C4:c8")
If Not Intersect(Target, Rng) Is Nothing And Target = 1 Then
With Sheets("Bieu Do")
.[c9] = Cells(Target.Row, 6): .[d9] = Cells(Target.Row, 13)
.[f9] = Cells(Target.Row, 14): .[h9] = Cells(Target.Row, 15)
.[d8] = Cells(Target.Row, 7): .[f8] = Cells(Target.Row, 8)
.[h8] = Cells(Target.Row, 9)
End With
End If
End Sub
Bạn xem thêm trong file đính kèm, có cả hướng sử dụng & chúc vui!Cảm ơn bạn đã hồi âm, mình cũng đã thử mảco cua bạn rồi nhưng không được bạn ơi, excell bị treo luôn. Mình chỉ muốn vùng dữ liệu của biểu đổ thay đổi thôi giống như biểu đồ động đó (Dynamic chart) vậy thôi bạn có giúp mình được không? Cảm ơn nhé
Option Explicit
Sub TuDongVeBieuDo()
On Error Resume Next
Dim Rng As Range, Clls As Range, rSelec As Range
Sheets("DaTa").Select
Set Rng = Range("C4:c18"): Set rSelec = Selection.Offset(-1)
If Not Intersect(rSelec, Rng) Is Nothing And rSelec = 1 Then
With Sheets("Bieu Do")
.Range("D8:N8").ClearContents: .Range("C9:N9").ClearContents
.[c9] = rSelec.Offset(, 3): .[d9] = rSelec.Offset(, 10)
.[f9] = rSelec.Offset(, 11): .[h9] = rSelec.Offset(, 12)
.[J9] = rSelec.Offset(, 13): .[L9] = rSelec.Offset(, 14)
.[N9] = rSelec.Offset(, 15):
.[d8] = rSelec.Offset(, 4): .[f8] = rSelec.Offset(, 5)
.[h8] = rSelec.Offset(, 6): .[j8] = rSelec.Offset(, 7)
.[L8] = rSelec.Offset(, 8): .[N8] = rSelec.Offset(, 9)
End With
End If
For Each Clls In Rng
If Clls.Address <> rSelec.Address Then Clls = ""
Next Clls
Sheets("Bieu Do").Select
End Sub