2016-04-04 3 views
0

Я новичок в программировании и некоторое время озадачивался этой проблемой. Я подозреваю, что решение будет включать вложенные условные обозначения и/или определенную пользователем функцию. У меня есть таблица, похожая на этот, который был отсортирован от самого маленького до самого большого в колонке «лист #»:Excel VBA Последовательные и не последовательные номера конкатенации

QTY Type Sheet# 
1 B 1000 
5 B 1001 
3 B 1002 
2 B 1005 
7 B 1009 
4 B 1010 
2 B 1010 
3 B 1010 
1 B 1011 
2 B 1012 
6 B 1013 
8 B 1013 
1 B 1015 
1 B 1015 
2 B 1016 

Есть несколько вещей, чтобы рассмотреть: Некоторые из номеров листов являются дубликатами, некоторые из номеров листов (например, 1006 через 1008 отсутствуют в списке выше) некоторые из номеров листов являются последовательными, некоторые из них являются дубликатами, а затем последовательно со следующим номером листа (как в 1010, 1010, 1010, 1011)

Результат, который мне нужно произвести, состоит из трех ячеек: всего количества, перевода буквы (как в «В» означает «Луч» и конкатенации номеров листов, которые будут читать следующим образом:

QTY Type Sheet# 
48 Beams On sheets 1000 to 1002, 1005, 1009 to 1013, 1015 and 1016 

Перевод с «B» на «Балки» - это только один случай. У меня есть другая таблица на отдельном листе, в котором перечислены все типы, например. B = луч, C = колонка, BR = скоба, PS = опоры для труб и т. Д.

Любое руководство будет оценено очень сильно.

+1

Количество может быть достигнуто с помощью 'sumif', но вам, вероятно, понадобится vba для отдыха. Если вы не собираетесь прилагать никаких усилий, нанимайте кого-то для выполнения этой работы. – findwindow

+0

Показать усилие? У меня около двух недель опыта работы с VBA. Мой вопрос задает вопрос о том, КАК выполнить эту задачу, используя VBA. Я не прошу никого делать всю работу. Я думал, что смысл этого сайта состоял в том, чтобы задавать вопросы ?! – FatMunkey

+0

Пожалуйста, смотрите [как спросить] (http://stackoverflow.com/help/how-to-ask). – findwindow

ответ

0

Скопировать B: C к другой области (я поместил в G: Н)

Используйте функцию "Удалить дубликаты" на вкладке данных

В F2 входят: =SUMIF(B:B,G2,A:A)

В I2 положить в формуле ВПР, чтобы оттянуть значение B или C или любой

в J2 поставить следующую формулу: =IF(G2<>G1,"On sheets " & H2,IF(AND(H2=H1+1,H2=H3-1),J1,IF(H2=H1+1,J1 & " to " & H2,J1 & ", " & H2)))

Перетащите F2, I2 и J2 вниз.

Вот как это выглядело, когда я играл с некоторыми тестовыми данными (Не делать ВПР, это не имеет отношения к моим тестам)

QTY TypeSheet# 
48 B 1000 On sheets 1000 
48 B 1001 On sheets 1000 
48 B 1002 On sheets 1000 to 1002 
48 B 1005 On sheets 1000 to 1002, 1005 
48 B 1009 On sheets 1000 to 1002, 1005, 1009 
48 B 1010 On sheets 1000 to 1002, 1005, 1009 
48 B 1011 On sheets 1000 to 1002, 1005, 1009 
48 B 1012 On sheets 1000 to 1002, 1005, 1009 
48 B 1013 On sheets 1000 to 1002, 1005, 1009 to 1013 
48 B 1015 On sheets 1000 to 1002, 1005, 1009 to 1013, 1015 
48 B 1016 On sheets 1000 to 1002, 1005, 1009 to 1013, 1015 to 1016 
20 C 1012 On sheets 1012 
20 C 1013 On sheets 1012 to 1013 
20 C 1015 On sheets 1012 to 1013, 1015 
20 C 1016 On sheets 1012 to 1013, 1015 to 1016 

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

+0

Эй, Дэн, спасибо за быстрый ответ! Результат, который вы показываете, именно то, что я пытаюсь сделать. Тем не менее, я, должно быть, сделал что-то неправильно, потому что вместо этого я получаю следующее: «На листах 221,222,223,224,225,226 ...» Я составил тестовый лист и использовал точные столбцы, как вы описали, и скопировали и вложили формулы. Я сделал снимок экрана, но не вижу способа показать его здесь. – FatMunkey

+0

Опубликуйте, что вы делаете шаг за шагом, и я могу вам помочь. –

+0

Я отредактировал вышеупомянутый комментарий с более подробной информацией. Но здесь еще больше. я сделал тестовый лист. В нем я поместил свои данные в столбцы A, B и C. Я скопировал B, C в G, H. Ввел формулу SumIf в F2 и скопировал ее. Ввел формулу в I2 (Vlookup) и вашу формулу в J2 и скопировал вниз. Результат: «На листе 221,222,223,224,225 ...» – FatMunkey

Смежные вопросы