Excel 如何在列中的两个值之间选择单元格并从所选元素绘制图表
我有个问题。我需要编写宏来选择E列中的值。 所选项目的值应介于单元格T2和U2中的值之间。 选择后,宏应绘制图表 我试过三种方法: 第一种方法:Excel 如何在列中的两个值之间选择单元格并从所选元素绘制图表,excel,vba,Excel,Vba,我有个问题。我需要编写宏来选择E列中的值。 所选项目的值应介于单元格T2和U2中的值之间。 选择后,宏应绘制图表 我试过三种方法: 第一种方法: Sub wykres1() Dim rng As Range Dim cell As Range Set rng = Range("E1", Range("E65536").End(xlUp)) For Each cell In rng If cell.Value > "T2" and
Sub wykres1()
Dim rng As Range
Dim cell As Range
Set rng = Range("E1", Range("E65536").End(xlUp))
For Each cell In rng
If cell.Value > "T2" and cell.value < "U2" Then Cell.Select
With Selection
ActiveSheet.Shapes.AddChart2
End With
Next cell
End Sub
Sub wykres2()
Dim rng As Range
Dim cell As Range
Set rng = Range("E1", Range("E65536").End(xlUp))
For Each cell In rng
If cell.Value > ActiveSheet.Cell(2,20).Value and cell.value < ActiveSheet.Cell(2,21).Value Then Cell.Select
With Selection
ActiveSheet.Shapes.AddChart2
End With
Next cell
End Sub
Sub wykres3()
Dim rng As Range
Dim cell As Range
Set rng = Range("E1", Range("E65536").End(xlUp))
For Each cell In rng
If cell.value > -35 And cell.value < -32 Then cell.Select
With Selection
ActiveSheet.Shapes.AddChart2
End With
Next cell
End Sub
Wykres2不工作,因为带有if
的行高亮显示为红色
第三种方法:
Sub wykres1()
Dim rng As Range
Dim cell As Range
Set rng = Range("E1", Range("E65536").End(xlUp))
For Each cell In rng
If cell.Value > "T2" and cell.value < "U2" Then Cell.Select
With Selection
ActiveSheet.Shapes.AddChart2
End With
Next cell
End Sub
Sub wykres2()
Dim rng As Range
Dim cell As Range
Set rng = Range("E1", Range("E65536").End(xlUp))
For Each cell In rng
If cell.Value > ActiveSheet.Cell(2,20).Value and cell.value < ActiveSheet.Cell(2,21).Value Then Cell.Select
With Selection
ActiveSheet.Shapes.AddChart2
End With
Next cell
End Sub
Sub wykres3()
Dim rng As Range
Dim cell As Range
Set rng = Range("E1", Range("E65536").End(xlUp))
For Each cell In rng
If cell.value > -35 And cell.value < -32 Then cell.Select
With Selection
ActiveSheet.Shapes.AddChart2
End With
Next cell
End Sub
Sub-wykres3()
变暗rng As范围
暗淡单元格作为范围
设置rng=范围(“E1”,范围(“E65536”)。结束(xlUp))
对于rng中的每个单元
如果cell.value>-35和cell.value<-32,则选择cell.Select
有选择
ActiveSheet.Shapes.AddChart2
以
下一个细胞
端接头
Wykres3运行后冻结。当我用draw chart移除零件时
宏选择一个单元格,而不是具有选定值的区域。我在这里
将值放在宏(-35)(-32)中,但我对可能性感兴趣
输入单元格(T2)(U2)中的值
正如我提到的,我需要创建一个宏来选择列E中的单元格,其值介于单元格T2和U2中的值之间。选择后,宏必须绘制图表 谢谢您的帮助。试试这个(未经测试)。避免使用
。选择。处理对象。你可能想看看
Sub-wykres1()
变暗rng作为范围,单元格作为范围
朦胧如长,我如长
将ws设置为工作表
“~~>根据需要进行更改
设置ws=Sheet1
与ws
“~~>查找列E中的最后一行
lRow=.Range(“E”和.Rows.Count).End(xlUp).Row
“~~>在范围内循环
对于i=1至lRow
If.Range(“E”和i).Value>范围(“T2”).Value和_
.范围(“E”和i).值<.范围(“U2”).值
带.Range(“E”和i)
'
“~~>做点什么
'
以
如果结束
接下来我
以
端接头
正如我提到的,我需要创建一个宏来选择列E中的单元格,其值介于单元格T2和U2中的值之间。选择后,宏必须绘制图表
您可以将上面找到的每个范围存储在一个范围对象中,然后使用该对象。看这个例子
Sub wykres1()
Dim rng As Range, cell As Range
Dim lRow As Long, i As Long
Dim ws As Worksheet
Dim Obj As ChartObject
'~~> Change as applicable
Set ws = Sheet1
With ws
'~~> Find last row
lRow = .Range("E" & .Rows.Count).End(xlUp).Row
'~~> Liip though the range
For i = 1 To lRow
If .Range("E" & i).Value > .Range("T2").Value And _
.Range("E" & i).Value < .Range("U2").Value Then
'~~> Store the cell in a range object
If rng Is Nothing Then
Set rng = .Range("E" & i)
Else
Set rng = Union(rng, .Range("E" & i))
End If
End If
Next i
'~~> Once you have the range, create a chart and assign range
If Not rng Is Nothing Then
With .ChartObjects.Add(Left:=100, Width:=375, Top:=75, Height:=225)
.Chart.SetSourceData Source:=rng
.Chart.ChartType = xlColumnClustered
End With
End If
End With
End Sub
Sub-wykres1()
变暗rng作为范围,单元格作为范围
朦胧如长,我如长
将ws设置为工作表
作为图表对象的Dim Obj
“~~>根据需要进行更改
设置ws=Sheet1
与ws
“~~>查找最后一行
lRow=.Range(“E”和.Rows.Count).End(xlUp).Row
“~~>Liip通过范围
对于i=1至lRow
If.Range(“E”和i).Value>范围(“T2”).Value和_
.范围(“E”和i).值<.范围(“U2”).值
“~~>将单元格存储在范围对象中
如果rng不算什么,那么
设置rng=.Range(“E”和i)
其他的
设置rng=Union(rng、.Range(“E”&i))
如果结束
如果结束
接下来我
“~~>获得范围后,创建图表并指定范围
如果不是,那么rng什么都不是
With.ChartObjects.Add(左:=100,宽:=375,顶:=75,高:=225)
.Chart.SetSourceData源:=rng
.Chart.ChartType=xlColumnClustered
以
如果结束
以
端接头
你好。感谢您的帮助,但当我运行宏时,这是一个问题,因为当我从ws=sheet1更改为ws=336(这是我的工作表的名称)时,会发生不匹配错误。即使我将工作表的名称从336更改为sheet1,宏仍在运行,但什么也没有发生。sheet1
是代码名。如果您想使用工作表名称,请像使用Set ws=thiswoolk.Sheets(“336”)
一样使用它。我还对上述代码进行了更改。您可能想刷新页面以查看它?好的,现在一切都好了。谢谢你的帮助,你太棒了,先生!!!