Изменение серийного идентификатора для включения чисел на основе данных в другой ячейке [Excel 2010]

#vba #excel

#vba #excel

Вопрос:

Я пытаюсь создать новые серийные идентификаторы на основе данных в двух ячейках в MS Excel 2010.

Первая ячейка содержит текущий серийный идентификатор, например, A ^ B Вторая ячейка содержит количество, например, 4

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

A ^ B ^ 1 A ^ B ^ 2 A ^ B ^ 3 A ^ B ^ 4 (все в разных ячейках столбца)

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

Спасибо.

Ответ №1:

Вы говорите, что третья ячейка должна быть объединена, но затем говорите, что она должна быть в разных ячейках…. Если вы хотите, чтобы они были объединены, тогда UDF должен быть довольно простым..

что-то вроде:

 Function myfunction(Ftext As String, Ntimes As Integer) As String

    Dim chk As Integer
    chk = 1

    Do While chk <= Ntimes
        myfunction = myfunction amp; Ftext amp; chk amp; " "
        chk = chk   1
    Loop

    myfunction = Trim(myfunction)

End Function
 

Вы бы просто использовали это на листе, как и любую другую функцию

 =myfunction(cell1,cell2)
 

Комментарии:

1. Спасибо за функцию. Я попробовал, но это не дало никакого результата. Просто показывает #VALUE в третьем столбце при попытке вызвать эту функцию.

2. Чтобы уточнить мое утверждение, я имел в виду, что ячейки 1 и 2 должны объединяться последовательно, но результат должен быть показан в третьем столбце. Например, если у нас есть следующие входные данные: столбец 1, столбец 2 A_12 ^ 2, 3 A_37 ^ B, 4 На основе этого ввода, вывод столбца 3 должен быть столбцом 3 A_12 ^ 2 ^ 1 A_12 ^ 2 ^ 2 A_12 ^ 2 ^ 3 A_37 ^ B ^ 1 A_37 ^ B ^2 A_37 ^ B ^ 3 A_37 ^ B ^ 4

Ответ №2:

Вот пример использования макроса для заполнения всех ячеек:

 Sub CreateSerialNumbers()

    Dim i As Integer, j As Integer

    With Sheets("Sheet1") 'Change to your sheet name
        For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row 'Assume we start in row 2 and work to the bottom of the sheet
            For j = 1 To .Cells(i, 2).Value
                .Cells(i, j   2).Value = .Cells(i, 1).Value amp; "^" amp; j
            Next j
        Next i
    End With

End Sub
 

Предполагается, что ваши данные начинаются со строки 2, и что сериалы находятся в столбце A, а числа — в столбце B.

Комментарии:

1. Спасибо за код. Я добавил его, но он выдает ошибку несоответствия типов, хотя я проверил типы обоих входных данных.

2. Я бы предположил, что у вас есть нечисловые данные во втором столбце, в котором указаны цифры. Используйте немедленное окно, чтобы найти значение i при возникновении ошибки. Это покажет вам строку с «плохими» данными.