移动两个连续点的数据标签

时间:2015-08-07 14:28:52

标签: excel vba excel-vba

我一直试图找到一种方法来移动数据标签在点之上或之下。

从第1点开始,对于每两个连续点,我想将数据标签移动到该点之上,而对于接下来的2,我想将它们移动到下面。我不确定如何更改for循环或if语句来适应这种情况。所以最后,第1点和第2点的数据标签位于上方,第3点和第4点的数据标签位于下方,5和6位于......等等

如果有人可以提供帮助,我会非常感激。

Dim FlowIndex As Long

    With ActiveChart.SeriesCollection(1)
        For FlowIndex = 1 To .Points.Count 
        With .Points(FlowIndex)
            If .HasDataLabel Then
                With .DataLabel
                    .Position = xlLabelPositionAbove
                    .Orientation = xlHorizontal
                End With
            End If
        End With
    Next
End With

3 个答案:

答案 0 :(得分:0)

这是如何执行循环的数学问题。想想值1,2,3,4,5,6,7,8。什么数学规则会将1,2,5,6放在同一组中,将3,4,7,8放在另一组中?

可能的答案:除以4,1和& 2轮下降到0.3& 4轮到1. 7& 8轮到3.所以,一组向上舍入为偶数,一组向下舍入为奇数。有很多方法可以反映这个原则,但这里有一个:

IF FlowIndex MOD 4 = 1 OR FlowIndex MOD 4 = 2 then 'There is a remainder of 1 or 2 when divided by 4 - put label above
      'Do stuff
Else 'There is a remainder of 3 or 0 when divided by 4 - put label below
      'Do other stuff
End If

为了澄清我对你最后一个问题的回答,MOD是一种分割方法,它在进行整数除法后返回余数。所以5 MOD 3是2,9 MOD 3是0等

答案 1 :(得分:0)

鸿沟

1, 2, 3, 4, 5, 6, 7, 8

by 2,并向上舍入,得到:

1, 1, 2, 2, 3, 3, 4, 4

然后你可以测试1, 1, 2, 2, 3, 3, 4, 4是奇数还是偶数。如果是奇数,则在上面标记。如果是偶数,则在下面标注。

答案 2 :(得分:0)

可替换地:

bLabelAbove = True

For i = 0 to 20 step 2      
    For j = 1 to 2
        If bLabelAbove Then
            Series.DataLabels(i + j).Position = xlLabelPositionAbove
        Else
            Series.DataLabels(i + j).Position = xlLabelPositionBelow
        End If
    Next

    bLabelAbove = Not bLabelAbove
Next