Nano Hash - криптовалюты, майнинг, программирование

Расширение единственной ячейки в несколько строк на основе числа в ячейке - EXCEL

У меня есть электронная таблица, содержащая столбец чисел.

Для каждого значения в справочном столбце мне нужно, чтобы excel создавал строку чисел в соседнем столбце со значениями, начинающимися с числа 1, постепенно увеличивающимися на 1 и заканчивающимися после достижения справочного значения. Затем это необходимо повторить для следующего значения в опорном столбце и так далее, продолжая расширяться в соседнем столбце.

Ниже приведен пример ссылочного столбца, содержащего 3 значения, и то, что я сделал вручную рядом. Помогите мне написать функцию на VBA, чтобы мне не приходилось делать это вручную.
пример того, что мне нужна функция

Спасибо за помощь в продвинутом.

07.04.2018

Ответы:


1

Более крупные сгруппированные серии выиграют от массива.

sub main()
    dim i as long, j as long, k as long, vals as variant

    redim vals(1 to application.sum(range(cells(2, "i"), cells(rows.count, "i").end(xlup))), 1 to 1)

    for i=2 to cells(rows.count, "i").end(xlup).row
        for j=1 to cells(i, "i").value2
            k=k+1
            vals(k, 1) = j
        next j
    next i

    cells(2, "j").resize(ubound(vals, 1), ubound(vals, 2)) = vals
end sub
07.04.2018
  • как бы мне запустить его. Я помещаю его в скрипт и нажимаю «Выполнить», но ничего не происходит... код, однако, имеет смысл! 07.04.2018
  • Я завернул его в стандартный синтаксис подпроцедуры. Уверяю вас, что это было проверено перед публикацией. 07.04.2018

  • 2

    Это не позволяет вам выйти за пределы последней строки Excel


    Option Explicit
    
    Public Sub ExpandReferenceNumbers()
        Const REF_COL = 9 'I
        Dim arr As Variant, lr As Long, i As Long, j As Long, k As Long
        Dim maxRows As Long, maxVal As Long, maxXLRows As Long
    
        maxXLRows = Rows.Count
        lr = Sheet1.Cells(maxXLRows, REF_COL).End(xlUp).Row
    
        arr = Sheet1.Range(Sheet1.Cells(2, REF_COL), Sheet1.Cells(lr, REF_COL))
        For i = 1 To lr - 1
            maxRows = maxRows + arr(i, 1)
        Next
        If maxRows > maxXLRows Then maxRows = maxXLRows - 2
    
        arr = Sheet1.Range(Sheet1.Cells(2, REF_COL), Sheet1.Cells(maxRows + 1, REF_COL + 1))
        k = 1
        For i = 1 To lr
            For j = 1 To arr(i, 1)
                If k + j - 1 > maxRows Then Exit For
                arr(k + j - 1, 2) = j
            Next
            k = k + arr(i, 1)
        Next
        Sheet1.Range(Sheet1.Cells(2, REF_COL), Sheet1.Cells(maxRows + 1, REF_COL + 1)) = arr
    End Sub
    

    Результат

    Результат

    07.04.2018

    3

    Или с массивами

    Option Explicit
    
    Sub test()
    
        Dim arr(), i As Long, j As Long, output As String
    
        With ThisWorkbook.Worksheets("Sheet1")
            arr = .Range("I2", .Cells(.Rows.Count, "I").End(xlUp)).Value
            For i = LBound(arr, 1) To UBound(arr, 1)
                j = 0
                Do While j < arr(i, 1)
                    j = j + 1
                    output = output & CStr(j) & ","
                Loop
            Next i
            .Range("J2").Resize(UBound(Split(output, ",")), 1) = Application.WorksheetFunction.Transpose(Split(output, ","))
        End With
    End Sub
    
    07.04.2018

    4
  • @ С.Дорра, есть отзывы? 07.04.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..