Как перечислить каждое значение между ячейками в целых столбцах? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь создать цикл, который печатает каждое значение между двумя ячейками в строке в один столбец.Я также хотел бы, чтобы он пропускал / игнорировал нецелые значения.

Например: Ячейка A5 содержит 5673, а Ячейка B5 содержит 5677. Поэтому макрос будет выводить 5673, 5674, 5675, 5676 и 5677.

Я нашел несколько полезных примеров для циклического прохождения каждой строки и печати каждого значения, но не смог объединить их.

Чтобы напечатать каждое значение между двумя числами:

[D1] = [A1].Value
ato = [B1].Value
[D1].DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=ato

Чтобы пройти по каждой строке:

LR = Range("A" & Rows.Count).End(xlUp).Row
For j = 1 To LR
   Cells(j, 1).Offset(0, 2).Value = ***Every cell value between Cells(j, 1) and Cells(j, 2)***
Next j

До:

https://i.imgur.com/Hn4aS2h.png

Желательно после:

https://i.imgur.com/LYgmuZz.png

Ответы [ 3 ]

1 голос
/ 17 апреля 2019

Попробуй это. Вы можете использовать SpecialCells для выбора числовых ячеек и Fill для создания промежуточных последовательностей.

Sub x()

Dim rA As Range, rCell As Range

For Each rA In Columns(1).SpecialCells(xlCellTypeConstants, xlNumbers).Areas
    For Each rCell In rA
        Range("D" & Rows.Count).End(xlUp)(2).Value = rCell.Value
        Range("D" & Rows.Count).End(xlUp).DataSeries Rowcol:=xlColumns, Step:=1, Stop:=rCell.Offset(, 1), Trend:=False
    Next rCell
Next rA

End Sub
0 голосов
/ 17 апреля 2019

Цикл по диапазону ячейка за ячейкой; тест для IsNumeric и Duplicate values. Примечание: это всего лишь тестовый код, вы всегда должны добавлять ссылки на книги и таблицы

For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row

    For j = 1 To 2
        If IsNumeric(Cells(i, j)) And Cells(i, j).Offset(, 1).Value <> Cells(i, j).Value Then
            If IsEmpty(Cells(1, 4).Value) Then
                Cells(1, 4) = Cells(i, j)
            Else: Cells(Rows.Count, 4).End(xlUp).Offset(1) = Cells(i, j)
            End If
        End If
    Next j
Next i
0 голосов
/ 17 апреля 2019

Если у вас всегда будут эти 2 столбца, то вы можете использовать этот код

for j = 1 to 2:for i = 1 to cells(rows.count,j).end(xlup).row
if isnumeric(cells(i,j)) then cells(rows.count,4).end(xlup).offset(1,0) = cells(i,j)
next:next

имейте в виду, что он будет публиковать любой номер, если вам нужно удалить дубликаты, вы можете сделать это с помощью range.removeduplicate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...