2016-04-04 30 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など)と連続しています。

私が作成する必要がある結果は、3つのセルです。量の合計、文字の翻訳(「B」は「Beam」を表し、シート番号の連結は次のようになります。

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

「B」から「ビーム」への翻訳は、1つの場合のみです。別のワークシートに別のテーブルがあり、すべてのタイプがリストされています。 B =ビーム、C =コラム、BR =ブレース、PS =パイプのサポートなど。

ご指摘いただきありがとうございます。

+1

数量は 'sumif'で得ることができますが、残念ながらvbaが必要です。あなたが何らかの努力をするつもりでないなら、仕事をするために誰かを雇ってください。 – findwindow

+0

表示:私はVBAで約2週間の経験があります。私の質問は、VBAを使ってこのタスクを達成するためのHOWについての提案を求めています。誰もがすべての仕事をするよう求めているわけではありません。私はこのサイトのポイントは質問をすることだと思った? – FatMunkey

+0

[質問する](http://stackoverflow.com/help/how-to-ask)をご覧ください。 – findwindow

答えて

0

コピーB:別の領域へのC(IはGに配置され:H)

入力F2でデータタブで

"を重複を削除" 機能を使用する:I2で=SUMIF(B:B,G2,A:A)

J2でBまたはCの意味や何

を引き戻すためにVLOOKUPの数式に入れて、次の式を置く:=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 

私はいくつかのテストデータを再生したときにそれが見えた方法です(VLOOKUPを行いませんでした、それは私のテストのベアリングを持っていない)

単純にタイプごとに最後の行を除くすべてを削除してください

+0

こんにちはダン、速い応答のために感謝!あなたが示す結果はまさに私がやろうとしているものです。しかし、私はこれを得る代わりに、何か間違ったことをしているに違いないでしょう: "シート221,222,223,224,225,226 ..."私はテストシートを作って、あなたが記述した通りに正確なカラムを使い、あなたのフォーミュラを貼り付けました。私はスクリーンショットを撮ったが、ここに表示する方法は見当たらない。 – FatMunkey

+0

あなたが何をしているのかを段階的に投稿してください。私はあなたを助けることができます。 –

+0

上記のコメントを詳細に編集しました。しかしここにはさらに多くのものがあります。私はテストシートを作った。私はデータをA列、B列、C列に配置しました.B、CをG、Hにコピーしました。 F2にSumIf式を入力してコピーしました。 I2(Vlookup)に数式を入力し、J2に数式を入力してコピーしました。結果は "シート221,222,223,224,225 ..." – FatMunkey

関連する問題