2 votes

Remplir les cellules avec des nombres séquentiels dans une macro Excel (2003)

J'ai besoin de remplir une colonne excel avec une série séquentielle, dans ce cas de -500 à 1000. J'ai une macro pour le faire, mais elle prend beaucoup de lignes pour quelque chose qui semble devoir être une simple fonction [quelque chose comme FillRange(A2:A1502, -500, 1000, 1)]. Mais si cette fonction existe, je ne la trouve pas. Est-ce que ce qui suit est aussi simple et élégant que possible ?

'Draw X axis scale
Cells(1, 1).Value = "mV"
Cells(2, 1).Value = -500
Cells(3, 1).Value = -499
Cells(4, 1).Value = -498

Dim selection1 As Range, selection2 As Range

Set selection1 = Sheet1.Range("A2:A4")
Set selection2 = Sheet1.Range("A2:A1502")

selection1.AutoFill Destination:=selection2

6voto

Toc Points 1731
Range("A1")=-500
Range("A1").Select
Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
        Step:=1, Stop:=500, Trend:=False

5voto

Mashed Potato Points 329
Sub FillASeries()

    With Sheet1.Range("a1")
        .Value = -500
        .AutoFill .Resize(1501, 1), xlFillSeries
    End With

End Sub

Je ne pense pas qu'il y ait une seule fonction, mais je ne peux pas faire plus court que la procédure.

2voto

Jordan 1GT Points 815

Ce que vous recherchez n'est pas une fonction.

Tapez -500 dans A2 et tapez "Ctrl+Enter" (cela accepte le nombre et sélectionne la cellule).

Allez ensuite dans le menu "Edition" --> "Remplissage" --> "Série"

Régler la "Série dans" sur "Colonnes"

Régler la "valeur d'arrêt" à 1000

Cliquez sur "OK" et vous obtiendrez le résultat souhaité.

0voto

Nik Points 21
Sub Test()

    Call NumberSeriesI(Sheet1.Range("A1"), "MySeries", -1000, 500, 1)

End Sub

Sub NumberSeriesI(StartCell As Range, Header As String, FirstN As Integer, LastN As Integer, StepN As Integer)

' Integer version

    Dim i As Integer ' Value
    Dim r As Integer ' row

    StartCell.Cells(1).Value = Header ' Cells(1) makes sure it only uses the first cell of passed-in range,
                                        ' in case you pass in a multi-celled range for StartCell
    i = FirstN
    r = 1

    Application.ScreenUpdating = False ' Much faster, so the screen is not refreshed until all the values in place

    For i = FirstN To LastN Step StepN
        StartCell.Cells(1).Offset(r, 0).Value = i
        i = i + StepN
        r = r + 1
    Next i

    Application.ScreenUpdating = True

End Sub ' NumberSeriesI

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X