• ベストアンサー

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

  • エクセルVBAでの並び替えについて

    エクセルでデータの並び替えの方法が分からなくて質問します。たとえばBの列の100~999、A100~A999、B100~B999のようなデータが縦に入っているものとします。この中には150-1、150-2のようなデータも混ざってます。これをそのままエクセルで並び替えをしても100~999までは上手にできるのですがその後に150-1とかきてA100~が始まります。例えばこのデータを100~始まり149、150-1,150-2、152,153、154のように上桁から基準に並び替えを行いたいのですがいい方法はありませんか?現在はマクロを使ってVBAでSORTの引数を触ったりしたのですが上手にいきません。基本的にVBAで行っているのでVBAでお願いします。初心者なのでよろしくお願いします。

  • エクセル VBA データ並び替えと行削除

    エクセル2003にて VBA初心者です。 以下のようなデータがあります。  列A    列B     列C  識別   部品番号  ユニット         A10000   *100         A10001   *101         A10002   *102  *     A10002   *103         A10003   *104  *     A10003   *105  *     A10003   *106  ・        ・      ・  ・        ・      ・  ・        ・      ・ 列Bには部品番号が、列Cにはユニット名が記入されています。 同じ部品番号でもユニットが異なる場合には、列Aに*が記入されています。 このようなデータが20,000行ほどあります。 上記のようなデータを以下のように並べ替えたいと考えております。  列A    列B      列C     列D     列E  識別   部品番号   ユニット   ユニット  ユニット        A10000    *100        A10001    *101        A10002    *102     *103        A10003    *104     *105     *106 VBAを利用すればできるんだろうなーと思っていますが、 見当もつきません。 どうぞよろしくお願いいたします。

  • A列のデータに合わせてB:Gにあるデータを並べる。

    写真の黄色部分のデータを緑の部分の様に変更するためにはどんなVBAを書けばよいか全くアイデアが浮かびません。なにか良いアイデアがあればよろしくお願いします。写真が一枚しかアップできなかったので便宜的に2つのデータを並べましたが黄色から緑に変更です。行、列番号も便宜的に手入力ですが普通の行列番号との前提で、

  • 列に番号を打つ

    セルA3から1から順番に番号を付けようと思います。(A3=1,A4=2,A5=3,・・・・・・・)条件はこんな条件です。B列に何かデーターが入った時に(データーがない時は隣のA列は空白です)隣のA列に番号が付く。最初にデーターが入るのはセルB3から順番に下に入っていきます。データーはどこまで入るか決まっていません。A3のセル(=if(B3="","",A2+1))に関数を書くことが出来ません。(A列のセルにデーターがあるとB列にデーターがうまくコピーされません)つまりB3にデーターが入ってからA3に番号を打つようにVBAでよろしくお願いします。

  • アクセスVBAでデータを検索したいのですが、

    アクセスVBAでデータを検索したいのですが、 エクセルVBAのcells(i,1)にあたるようなものはないでしょうか。 添付画像のような信号を抽出したいので、立ち上がりの部分をさがしたいのですが。 ご存知のかた教えてください。 i=1 Do until cells(i,1)>=4 i=i+1 Loop 開始レコード=i データテーブルの1列目は行番号、2列目は信号が入っています。

  • エクセルで昨日までの日付データ行を非表示するVBAについて!

    初めて質問します。 エクセルでA列に入力されている、昨日までの日付データ行を非表示にする、VBAはどのように作成すればいいのか教えていただけないでしょうか? 他のホームページにあったVBAを使ってみましたがこのVBAですと空白部分も非表示になってしまいます。 お手数ですがよろしくお願いします。

  • エクセルVBA、列のコピーについて

    VBAについて助けてほしいことがございます! VBA初心者なので、ひょっとしたらレベルの低い質問かもしれず申し訳ないのですが、VBAに詳しい方がいらっしゃれば教えて欲しいことがあります。 下記の前提を含めた作業内容をVBAのコードとしてまとめる事は出来るのでしょうか? 1列目(A1,B1,C1,D1…)にキー項目(名前、番号、地域、住所、ID…)、2列目以降にキー項目のデータが入力されています。 【作業内容】 「ID」の項目の列には、「番号」の列の文字をコピーして貼りつける(キー項目は上書きせずにIDのまま)。 【前提】 ・キー項目の列は固定されていない(B列が番号の時もあれば、住所の時もある)ので、文字を基準にコピー作業をする ・「キー項目が空欄にぶつかったら、検索を終了」という事をループに入れる(キー項目数は変動するため) ・2列目以降の全てのデータをに張り付ける」という事をコードに入れる(2列目以降のデータの列数も変動する且つ途中に空欄も含むため)

  • Excel VBA 列 グループ化

    Excel VBAについてお尋ねいたします。 Excelにて横長の表を作成していますが、 VBAを使用してG列~J列をグループ化させたいです。 ネットで調べると行のグループ化のことだらけだったので、お分かりの方がいらっしゃいましたらご回答お願いいたします。

  • Excelの2つのBOOKのデータ統合のVBA

    Excelの2つのBOOKの項目が同じリストのデータを統合できるVBAを教えてください。項目は、処理結果、金額、年月日、番号、品名の5項目がA列~E列まででデータは複数行あります。VBAは初心者です。どうぞよろしくお願いいたします。

  • エクセルVBAで CSVファイルからのデーター参照

    エクセル2000を使用しています。 CSVで社員リストを作成して、エクセル上の指定のセルに 氏名を入力すると、年齢、性別、入社日等が他のセル表示出来るように 指定のですが、VBAでやるとすれば、どの様なコードになるのでしょうか??  現在は、OPENイベントを使用して、エクセルの別のシートにCSVファイルの全ての内容を読み込んでいます。そしてMAINのシートではLOOKUPを使用しているのですが、ファイル起動時に時間が掛かり、困っています。 エクセルとCSVの間で直接、データーのやり取りをしたいのですが・・・。

このQ&Aのポイント
  • EP-879AWプリンターのノズルクリーニングを数回行いましたが、改善されません。
  • 特にマゼンタのノズルの詰まりが目立ちます。
  • EP-879AWプリンターのノズルの詰まり問題について詳しく教えてください。
回答を見る

専門家に質問してみよう