如何根据来自另一个单元格的块值复制单元格中的值

时间:2016-08-01 12:04:35

标签: excel

我希望有多个城市号码和给定数据中提供的块数量。这是我所看到的图像以及我需要它的外观。 image of what would be needed done

  1. 在A栏中您看到41288,在B栏中您看到整数值为4

  2. 在空列中可以说C,D,E,F,G,H .....我希望它在单元格之间分隔,如E和F列所示。

    所以,我相信问题是我如何在(A)中的整数和数字之间分开?

  3. 我知道必须有一个公式。但是,不知道在谷歌上要求什么可以让你无处可去。

2 个答案:

答案 0 :(得分:0)

这不完全是您想要的格式,但我认为这与公式一样接近。

将其放入C2:

=IF(B2="","",IF(B2=1,"",B2-1))

向下自动填充C2,然后将整个列自动填充到右侧。

然后您将拥有:

 41288|4|3|2|1

然后您可以复制和转置以获得以下格式

 |41288|41289|41290|
 |   4 |   5 |   6 |
 |   3 |   4 |   5 |
 |   2 |   3 |   4 |
 |   1 |   2 |   3 |
 |     |   1 |   2 |
 |     |     |   1 |

HTH

编辑:

请注意,即使最后的单元格看起来是空的,如果你自动填充“太远”,那里仍然存在公式。如果您希望单元格完全为空,则可以先复制并粘贴仅使用值,然后稍后进行转置。

答案 1 :(得分:0)

VBA答案(以您所使用的确切格式为您提供)如下:

[Sheet1$B2:F6]

鉴于评论中修改后的要求,答案现在是:

Sub DigitBlocks()
Dim rng As Range, a As Double, b As Double, c As Double, d As Double, e As Double
Set rng = ActiveSheet.Range("A2").CurrentRegion

a = Val(Right(Left(rng.Address, InStr(rng.Address, ":") - 1), Len(Left(rng.Address, InStr(rng.Address, ":") - 1)) - InStrRev(Left(rng.Address, InStr(rng.Address, ":") - 1), "$"))) + 1
b = 3

For d = a To rng.Rows.Count
    Range("E" & b).Value = Range("A" & d).Value
    e = Range("B" & d).Value
    For c = 1 To e
        Range("F" & b + c - 1).Value = c
    Next c
    b = b + c
Next d
End Sub