Vba Excel模糊图

Vba Excel模糊图,vba,excel,Vba,Excel,我目前正在处理一些具有4个属性的数据。2个最小值和最大值。我想知道是否有可能自动绘制如图所示的绘图 我正在比较数据,看看每个值的最小值和最大值在X轴和Y轴上是否重叠 我可以手工操作,但由于要使用大量数据,手工操作将非常耗时 如果有人知道这是可能的,或者可以指导我找到解决方案,我将永远是伟大的 史蒂夫 非常感谢您的回复。这与我所希望的非常接近。给形势一点背景。假设一个2D形状的X长度是最小值和最大值的范围,Y长度也是最小值到最大值的范围 例如 第一区是 MinX=10 MaxX=20 所以X的长

我目前正在处理一些具有4个属性的数据。2个最小值和最大值。我想知道是否有可能自动绘制如图所示的绘图

我正在比较数据,看看每个值的最小值和最大值在X轴和Y轴上是否重叠

我可以手工操作,但由于要使用大量数据,手工操作将非常耗时

如果有人知道这是可能的,或者可以指导我找到解决方案,我将永远是伟大的

史蒂夫

非常感谢您的回复。这与我所希望的非常接近。给形势一点背景。假设一个2D形状的X长度是最小值和最大值的范围,Y长度也是最小值到最大值的范围

例如

第一区是

MinX=10 MaxX=20

所以X的长度是10

米尼=30 最大值=50

因此Y的长度是20

这相当于一个10乘20的盒子

第二区是

MinX=15 MaxX=25

所以X的长度是10

米尼=35 MaxY=55

因此Y的长度是20

这相当于一个10乘20的盒子

我们现在有两个区域在一个定义为15到20和35到50的区域中重叠

我想为多个条目直观地显示它

这可以在下图中看到(颜色不是必需的,只是为了向你们展示不同的区域)


也可以使用公式和条件格式完成,我已经根据您的示例和正在使用的公式,使用了2个元素完成了一个示例

=IF(AND(H$17>=$B$5,H$17<=$C$5,$G16>=$D$5,$G16<=$E$5),2,IF(AND(H$17>=$B$4,H$17<=$C$4,$G16>=$D$4,$G16<=$E$4),1,0))

=IF(AND(H$17>=$B$5,H$17=$D$5,$G16=$B$4,H$17=$D$4,$G16也可以使用公式和条件格式完成,我根据您的示例和正在使用的公式,使用了两个元素完成了一个示例

=IF(AND(H$17>=$B$5,H$17<=$C$5,$G16>=$D$5,$G16<=$E$5),2,IF(AND(H$17>=$B$4,H$17<=$C$4,$G16>=$D$4,$G16<=$E$4),1,0))

=IF(AND(H$17>=$B$5,H$17=$D$5,$G16=$B$4,H$17=$D$4,$G16编辑的)以下不是一个绘图,但可能有助于可视化您想要的内容。数据在工作表
MyData
中,结构与Nathan_sav的答案类似(从第2行开始;见图)。“绘图”是在工作表中绘制的
MyPlot
。Y值增加到页面底部。为获得更好的外观,请在工作表中隐藏网格线
MyPlot

数据结构(表
MyData
):

Private子命令按钮1\u单击()
将数据仓库作为工作表
以工作表的形式显示图纸
将MyObject设置为对象,将MyObject 2设置为对象
昏暗的灯塔一样长
将lStartVisualizationX变长,将lStartVisualizationY变长
将LHIGHERX值变长,LHIGHERY值变长
设置dataWS=工作表(“MyData”)
设置drawingWS=工作表(“MyPlot”)
lLastRow=dataWS.Cells(2,2).End(xlDown).Row
drawingWS.Columns(“A:Z”).entireclumn.Delete
lStartVisualizationX=30'X“图形”开始的位置
lstartVisualization Y=30'Y“图形”开始的位置
lHigherXValue=Application.WorksheetFunction.Max(dataWS.Columns(4))'X的最大值
lHigherYValue=Application.WorksheetFunction.Max(dataWS.Columns(5))'Y的最大值
lStepX=10'X分段
lStepY=10'Y刻度
'绘制“X轴、分区和标签”
对于i=0到lHigherXValue的步骤lStepX
“MyObject:线条
设置MyObject=drawingWS.Shapes.AddLine(lStartVisualizationX+i、lStartVisualizationY、lStartVisualizationX+i、lStartVisualizationY+lHigherYValue)
'MyObject 2:标签
设置MyObject2=drawingWS.Shapes.AddTextbox(msoTextOrientationUpward,lStartVisualizationX+i-2,lStartVisualizationY-20,10,20)
MyObject2.TextFrame.Characters.Text=i
MyObject2.TextFrame.Characters.Font.Size=6
MyObject2.Line.Visible=msoFalse
MyObject2.TextFrame.HorizontalAlignment=xlRight
MyObject2.TextFrame.VerticalAlignment=xlBottom
如果我是0那么
MyObject.Line.ForeColor.SchemeColor=22
MyObject.Line.DashStyle=msoLineRoundDot
如果结束
下一个
'绘制“Y轴和分段”
对于i=0到lHigherYValue步骤1stepy
设置MyObject=drawingWS.Shapes.AddLine(lStartVisualizationX、lStartVisualizationY+i、lStartVisualizationX+lHigherXValue、lStartVisualizationY+i)
设置MyObject2=drawingWS.Shapes.AddTextbox(msoTextOrientationHorizontal,lStartVisualizationX-20,lStartVisualizationY+i-2,20,10)
MyObject2.TextFrame.Characters.Text=i
MyObject2.TextFrame.Characters.Font.Size=6
MyObject2.Line.Visible=msoFalse
MyObject2.TextFrame.HorizontalAlignment=xlRight
MyObject2.TextFrame.VerticalAlignment=xlBottom
如果我是0那么
MyObject.Line.ForeColor.SchemeColor=22
MyObject.Line.DashStyle=msoLineRoundDot
如果结束
下一个
对于i=2至lLastRow
'数据是MinX,MinY,MaxX,MaxY
设置MyObject=drawingWS.Shapes.AddShape(MSOShapectAngle,lStartVisualizationX+dataWS.Cells(i,2),lStartVisualizationY+dataWS.Cells(i,3),(dataWS.Cells(i,4)-dataWS.Cells(i,2)),(dataWS.Cells(i,5)-dataWS.Cells(i,3)))
带MyObject
.Fill.Visible=msoTrue
.填充
.Fill.ForeColor.SchemeColor=单元格(i,2).Interior.ColorIndex
.Fill.Transparency=0.7
以
下一个
端接头
结果(表
MyPlot
):


编辑后的以下不是绘图,但可能有助于可视化您想要的内容。数据在工作表
MyData
中,结构与Nathan_sav的答案类似(从第2行开始;见图)。“绘图”是在工作表中绘制的
MyPlot
。Y值增加到页面底部。为获得更好的外观,请在工作表中隐藏网格线
MyPlot

数据结构(表
MyData
):

Private子命令按钮1\u单击()
将数据仓库作为工作表
以工作表的形式显示图纸
将MyObject设置为对象,将MyObject 2设置为对象
暗淡的