Excel 如何在列中的两个值之间选择单元格并从所选元素绘制图表

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

我有个问题。我需要编写宏来选择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 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”)
一样使用它。我还对上述代码进行了更改。您可能想刷新页面以查看它?好的,现在一切都好了。谢谢你的帮助,你太棒了,先生!!!