- ベストアンサー
VBA 給与データの社員番号による列ごと並び変え
社員給与明細を作成するに当たり困っています。問題は 1) 給与データは一人1行でA:ADまで細かいデータになっています。(写真1の部分) 2)それぞれの社員は関連会社の社員番号と本社の社員番号がありデータはすべて関連会社の番号で送られてきます。(写真1の部分) 3) これを本社の基準による地域別、社員番号別に分けて並び変える必要があります。(写真2の部分) 4)並び替えの基準は写真3の部分ような本社基準の順番がに合わせなければなりません。 5)excel の lookup関数ではおそらくセル1列しかデータを引っ張ってこないと思いますが今回はa:ad列までデータがあるのですべて並べ替える必要があります。 4)できればExcel VBAで作成したいのですが、初心者なのでなるべくシンプルなVBAがあれば教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
項の値は 換算等なく 其のまま引っ張って いいのですか? 因みに シート関数は 1セル毎に関数式が要る 此が当たり前ですね さて、 もし単純に並べかえるだけでいいなら =で、単純に参照する 対応順の表を作って lookup で、引っ張る VBAなら エンバレートとFindと アレーにした対応順表 此等の組み合わせで 読み出し位置を決めて 書き込む または、 Const 台帳 = 1 Const 読出元 = 0 ' Sub Sumple() Dim 着目列 Az Long Dim シート(1) Az worksheet Dim 対応順 Az V a r i a n t Dim 着目行 Az Range Set シート(台帳) _ = ThisWorkBook.Sheets("Sheet1") Set シート(読出元) _ = ThisWorkBook.Sheets("Sheet2") Set 対応順 = A r r a y (5,3,4,2,6,…) ' For 着目行 Each シート(台帳).Range("A2" , Cells(Rows,Count , "A").End(xlup)) Set シート(台帳).Range(着目行.Rows , 着目列) _ = シート(読出元).Range(着目行.Rows , 対応順(着目列)) Next 着目列 Next 着目行 ' Set ThisWorkBook.Sheets("Sheet1") _ シート(台帳) End Sub こんな感じか ですかね? ところで、 Arrayの内容は、 仮に、 適当に割り振っているので 作り直してください ね あと、 Arrayの内容の中の「…」 此は 消してください ね