2015-07-10 2 views
0

Мне было интересно, если бы кто-нибудь знал о формуле, чтобы перечислить все числа между двумя значениями, так, например, если в ячейке F2 было 12, а в G2 было 17, я бы хотел формулу, которая будет показывать 13,14,15,16 В ячейке H2.Excel: номера листингов между двумя номерами

Благодаря

ответ

1

Это не может быть сделано с помощью функции рабочего листа Excel. Для этого вам понадобится VBA. Это можно сделать с помощью пользовательской функции (UDF).

Следующий код необходимо сохранить в модуле кода. Вам нужно щелкнуть правой кнопкой мыши вкладку листа, выберите «Просмотреть код». Это откроет редактор Visual Basic. Нажмите Insert> Module, а затем вставьте следующий код:

Function InBetween(MyFirst As Integer, MyLast As Integer) 
Dim foo As String 
Dim i As Long 
foo = MyFirst + 1 
For i = MyFirst + 2 To MyLast - 1 
    foo = foo & "," & i 
Next i 
InBetween = foo 
End Function 

Теперь вы можете использовать формулу, как =InBetween(F2,G2) для получения результата вы описываете.

Вам необходимо сохранить файл в виде книги с поддержкой макросов с расширением XLSM. Смотрите скриншот для кода и пользовательской функции в действии.

enter image description here

1

Просто потому, что @teylyn сказал, что это не может быть сделано с помощью формулы - вот формула решения на основе:

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

Так создать новый именованный диапазон называется ГСЧЕМ и в Обозначает текстовое поле добавьте следующую формулу:

=",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20," 

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

Затем введите следующую формулу в ячейку Н2:

=SUBSTITUTE(LEFT(rng,FIND(","&G2&",",rng)+LEN(G2)),LEFT(rng,FIND(","&F2&",",rng)),"") 

К этому же скуку создания строки диапазона нумерации я использовал следующий Powershell код для создания и скопировать его в буфер обмена:

1..20 -join ',' | % {"=`",$($_),`""} | clip.exe 

Просто измените 20 в приведенном выше коде для любого диапазона, который вам нужен.