Excel模糊情节

我目前正在通过一些有4个属性的数据。 2个最小值和最大值。 我想知道是否有可能自动化的情节,如图所示。

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

我可以手工完成,但是手动使用的数据量将非常耗时。

如果有人知道这是否甚至可能,或者可以指导我解决任何帮助,我会永远是伟大的。

史蒂夫

模糊情节

非常感谢你的回复。 这与我所希望的非常接近。 给一点情况下的情况。 想象一下,二维形状的X长度是最小值和最大值的范围。 Y的长度也是从最小到最大。

举一个例子

区域1是

MinX = 10 MaxX = 20

所以X的长度是10

MinY = 30 MaxY = 50

所以Y的长度是20

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

区域2是

MinX = 15 MaxX = 25

所以X的长度是10

MinY = 35 MaxY = 55

所以Y的长度是20

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

我们现在有两个区域在15到20和35到50的区域重叠

我想要显示多个条目可视化。

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

更好的结果应该是什么样子的形象

编辑以下是不是情节,但可能有助于形象化你想要的。 数据在工作表MyData ,结构像在Nathan_sav的答案中(从第2行开始;参见图像)。 “图”绘制在工作表MyPlot 。 Y值增加到页面底部。 为了更好看,隐藏工作表MyPlot网格线

数据结构(表单MyData ): 在这里输入图像说明

 Private Sub CommandButton1_Click() Dim dataWS As Worksheet Dim drawingWS As Worksheet Dim MyObject As Object, MyObject2 As Object Dim lLastRow As Long Dim lStartVisualizationX As Long, lStartVisualizationY As Long Dim lHigherXValue As Long, lHigherYValue As Long Set dataWS = Worksheets("MyData") Set drawingWS = Worksheets("MyPlot") lLastRow = dataWS.Cells(2, 2).End(xlDown).Row drawingWS.Columns("A:Z").EntireColumn.Delete lStartVisualizationX = 30 'X position where "graph" starts lStartVisualizationY = 30 'Y position where "graph" starts lHigherXValue = Application.WorksheetFunction.Max(dataWS.Columns(4)) 'Maximun value of X lHigherYValue = Application.WorksheetFunction.Max(dataWS.Columns(5)) 'Maximun value of Y lStepX = 10 'X divisions lStepY = 10 'Y divisions 'Draw the "X axis and divisions and labels" For i = 0 To lHigherXValue Step lStepX 'MyObject: lines Set MyObject = drawingWS.Shapes.AddLine(lStartVisualizationX + i, lStartVisualizationY, lStartVisualizationX + i, lStartVisualizationY + lHigherYValue) 'MyObject2: labels Set 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 If i <> 0 Then MyObject.Line.ForeColor.SchemeColor = 22 MyObject.Line.DashStyle = msoLineRoundDot End If Next 'Draw the "Y axis and divisions" For i = 0 To lHigherYValue Step lStepY Set MyObject = drawingWS.Shapes.AddLine(lStartVisualizationX, lStartVisualizationY + i, lStartVisualizationX + lHigherXValue, lStartVisualizationY + i) Set 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 If i <> 0 Then MyObject.Line.ForeColor.SchemeColor = 22 MyObject.Line.DashStyle = msoLineRoundDot End If Next For i = 2 To lLastRow 'data is MinX, MinY, MaxX, MaxY Set MyObject = drawingWS.Shapes.AddShape(msoShapeRectangle, 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))) With MyObject .Fill.Visible = msoTrue .Fill.Solid .Fill.ForeColor.SchemeColor = Cells(i, 2).Interior.ColorIndex .Fill.Transparency = 0.7 End With Next End Sub 

结果(工作表MyPlot ):

在这里输入图像说明

它可以使用公式和条件格式也完成,我已经做了一个例子,使用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)) 

这是一个图像。

在这里输入图像说明

希望这有助于,只是一个build议。