• ベストアンサー

VBA 給与データの社員番号による列ごと並び変え

社員給与明細を作成するに当たり困っています。問題は 1) 給与データは一人1行でA:ADまで細かいデータになっています。(写真1の部分) 2)それぞれの社員は関連会社の社員番号と本社の社員番号がありデータはすべて関連会社の番号で送られてきます。(写真1の部分) 3) これを本社の基準による地域別、社員番号別に分けて並び変える必要があります。(写真2の部分) 4)並び替えの基準は写真3の部分ような本社基準の順番がに合わせなければなりません。 5)excel の lookup関数ではおそらくセル1列しかデータを引っ張ってこないと思いますが今回はa:ad列までデータがあるのですべて並べ替える必要があります。 4)できればExcel VBAで作成したいのですが、初心者なのでなるべくシンプルなVBAがあれば教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.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の内容の中の「…」 此は 消してください ね

関連するQ&A