我在图表上绘制了6个点,这些点必须按照X坐标的顺序出现。 X坐标中的4个将始终按升序排列。 X坐标中的2个将出现在任何位置,需要按正确顺序放置。
D2
D3
D4
D5
D6
D8
D9
Support spacing | 2.452 | m
Road width | 4.268 | m
Centre offset | 0 | m
Left extension | 0 | m
Right extension | 0.305 | m
Axle spacing | 1.8 | m
Right edge to | 2 | m
right wheel | |
在D14:H15范围内,我有一些计算给出了我用来确定图中Y值的坐标。它们可能使用也可能不使用。行14是各个组件长度的度量,行15是组件右侧的X坐标。列已标记为A到E,表示以下内容:
A | B | C | D | E
0.908 | 2.452 | 1.213 | 0.773 | 2.573
-1.226 | 1.226 | 2.439 | -1.361 | 0.439
目前,我按组件名称组织了表格。下一列X坐标是基于支持为X = 0的中心计算的。下一列确定道路左侧等于零的X坐标。基本上是前一列的偏移量。它是Y值计算所必需的。他们的计算已经足够复杂,没有折腾X协调班次。
接下来的三列是Y值。前两个Y值使用类似的公式,大约有18个嵌套的IF语句。由于它们与X的计算无关,我会提到它们在那里。我提到它们的长度/复杂性,以防公式需要放在另一个公式中用于排序目的,但我不认为这将是必需的,因为它们的值基于任何X值,对于它们所在的行。< / p>
| | X | F1 | F2 | Total F
Left edge | -2.134 | 0 | 0.00 | 0.00 | 0.00
Left support | -1.226 | 0.908 | 23.65 | 0.00 | 23.63
Left wheel | -1.361 | 0.773 | 0.00 | 0.00 | 0.00
Right support | 1.226 | 3.360 | 0.00 | 0.00 | 0.00
Right wheel | 0.439 | 2.573 | 7.58 | -93.52 | -85.94
Right edge | 2.439 | 4.573 | 0.00 | 0.00 | 0.00
C18至C23内的公式非常简单,如下:
=-D3/2-D5+D4
=-D2/2
=D3/2+D6+D4-D9-D8
=D2/2
=D3/2+D6+D4-D9
=D3/2+D6+D4
上表最终绘制如下图表:
我过去所做的是对车轮坐标进行计算并将其与行进行比较,如果不是,则显示车轮位置,否则显示行位置。对于B18,我会做类似的事情:
=IF(D3/2+D6+D4-D9-D8<-D3/2-D5+D4,"Left Wheel","Left edge")
由于我有两个轮子,我可以检查B18只是用于轮子,因为它总是在右轮之前。然而对于B19来说,检查变得有点复杂,因为潜在的结果是左边缘,左轮,右轮或梁:
=IF(D3/2+D6+D4-D9<-D3/2-D5+D4,"Right wheel",IF(D3/2+D6+D4-D9-D8<-D3/2-D5+D4,"Left edge",IF(D3/2+D6+D4-D9-D8<-D2/2,"Left wheel","Left support")))
现在我基本上重复一下,如果语句下去修改了列B的If条件和文本,我会基本上将它复制到C列,并用适当的公式替换文本结果。
由于我目前只处理6分,所以这是一个可管理但难看的解决方案。
我想知道的是,是否有更好的方法来布局数据,以便在不使用内置排序功能或VBA的情况下自行排序。桌子需要看起来像:
这将生成如下图:
我只是试着绕着第三排的if语句缠绕我的头,它真的变得丑陋。为了确定每行可能出现的情况,我写出了每种可能的配置,最后配置了15种可能的配置。
呃,如果第3行和第6行有不同可能的结果,我现在正在包围我。它比我想象的要便宜一些。答案 0 :(得分:0)
因此,在吃了一些午餐,然后尝试开始使用if语句,并且显然基本上遵循了Scott Craner的VBA建议进行分类时,我有一种顿悟。
我的解决方案是基本上创建一个重要坐标表:
然后生成我用于绘图和关联Y值的表格,我将以下内容用于我的X坐标:
=SMALL($C$18:$C$23,ROW()-ROW($C$30))
以升序显示坐标,ROW() - ROW($ C $ 30)作为计数器。
要将相关名称显示为X值,我使用了INDEX / MATCH组合:
=INDEX($B$18:$B$23,MATCH($C31,$C$18:$C$23,0))
我的桌子的其他4列不需要调整。这种方法的优点是,如果有需要,我可以在将来轻松添加支持,而不必乱用一系列IF语句。