2

В настоящее время у меня есть структура таблицы, как показано ниже:

Я попытался выбрать две колонки с серией и перетащить их вниз для автозаполнения, но, похоже, не сработало. Мне нужно что-то вроде ниже. Есть ли способ сделать это с помощью Excel, Google Sheets или что-то?

2 ответа2

2

Если у вас последняя версия Excel, в E2 введите формулу массива:

=TEXTJOIN(",",TRUE,ROW(INDIRECT(C2 & ":" & D2)))

и скопируйте вниз:

Формулы массива должны вводиться с помощью Ctrl + Shift + Enter, а не только клавиша Enter .

В противном случае введите следующую пользовательскую функцию в стандартном модуле:

Public Function CSList(n1 As Long, n2 As Long) As String
    Dim i As Long
    For i = n1 To n2
        CSList = CSList & "," & i
    Next i
    CSList = Mid(CSList, 2)
End Function

Затем в E2 введите:

=CSList(C2,D2)

и скопируйте вниз:

Пользовательские функции (UDF) очень просты в установке и использовании:

  1. ALT-F11 открывает окно VBE
  2. ALT-I ALT-M открывает новый модуль
  3. вставьте материал и закройте окно VBE

Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы использовать UDF из Excel:

=CSList(A1,B1)

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

а подробности о UDF смотрите в:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Макросы должны быть включены, чтобы это работало!

0

Хотя вышеуказанное решение помогло мне с помощью MS Excel, позже я смог решить эту проблему в Google Sheets. Я добавляю этот ответ сюда для тех, кто может не иметь доступа к MS Excel.

шаги:

  1. Перейдите в меню «Инструменты» и нажмите «Редактор сценариев ...»'
  2. В открывшемся файле кода вставьте приведенный ниже код и сохраните.

    function range2series(input) {
    
      try {
    
         var r = input.split("-");
         var exist = r[1];
    
         //get the start and stop value
         var start = r[0];
         var last  = r[1];
         var current = start;
         var output = "";
    
         while (current <= last) {
           output += current;     
           output += ",";
           current++;                     
         }  
    
         //remove the last comma.
          output = output.substring(0, output.length - 1);
          return output;
    
        } catch(err) {
           //if single value and not range send back the input.
           return input; 
        }  
    
    
    
    }
    

Теперь вы можете использовать функцию с листами Google. Просто щелкните по столбцу и введите =range2series(CELL) , например range2series(D4) .

Для более подробной информации см.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .