• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:地区ごとに並んだ全社員リストの地区間に列挿入マクロ)

地区ごとに並んだ全社員リストの地区間に列挿入マクロ

このQ&Aのポイント
  • 地区ごとの小計を出すために、社員リストの地区間に列挿入するマクロを作成したいです。
  • マクロにより、1行のシステムデータを3行のフォーマットに変更し、地区ごとの小計を出す必要があります。
  • マクロの難易度に関しては、詳しくない方でも理解しやすい形で教えていただけると助かります。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

作成例: エクセルに取り込んだところから たとえば A列に地区 B列に社員番号 C列に名前 D,E,F列に最初の3項目 G,H,I列に次の3項目 1行目はタイトル行 2行目からまだ一人1行ずつのデータ sub macro1()  dim r as long ’地区で並べ替える 既に並べ替えられているなら省略する  range("A1").currentregion.sort key1:=range("A1"), order1:=xlascending, header:=xlyes  ’先に地区小計を1行形式で挿入する  range("A1").currentregion.subtotal groupby:=1, function:=xlsum, totallist:=array(4,5,6,7,8,9), replace:=true, pagebreaks:=false, summarybelowdata:=true  range("A1").currentregion.value = range("A1").currentregion.value  ’そのあと各1行を3行にする  for r = range("A65536").end(xlup).row to 2 step -1   cells(r + 1, "A").resize(2, 1).entirerow.insert   cells(r + 1, "D") = cells(r, "E")   cells(r + 2, "D") = cells(r, "F")   cells(r + 1, "G") = cells(r, "H")   cells(r + 2, "G") = cells(r, "I")  next r  range("H:I").delete shift:=xlshifttoleft  range("E:F").delete shift:=xlshifttoleft end sub 回答した通りにサンプルのレイアウトを実際に作成して、動作を確認してください そのあと、実際のレイアウトに応じて自力で適切に応用してください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのマクロ(SUBTOTAL関数)について。

    お世話になります。 エクセルのマクロ(SUBTOTAL関数)について ご指導願います。 (F37)から(F?)の一つ上の行までを小計する。 といった数式はどのようになるのでしょうか? F?は貼り付ける表によって最後Fの列番号が 変わりますので。 自分の作業予定では、下記マクロを登録したいの ですが。 表を貼り付ける。ここから作業する下記マクロ登録。 オートフィルタ機能を使う。 F?の列だけを、抽出し、そこに一つ上の行ま でを小計する数式を入れる。(←ここの数式が分かりません。) その値をJ27に反映させる。 どうすればいいのかお教え願いますでしょうか? よろしく御願い申し上げます。

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

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

  • 重複するデータを抽出できる秀丸マクロ

    今、重複を含む長大なメールアドレスのリストを扱っています。(100万件以上あります) 一行に一アドレスで約100万行あるのですが、ここから重複している分を抽出したリストを作りたいと思っています。 Excelで開けないファイルですので、秀丸エディタのマクロで解決できないかな、と思っています。 自分でマクロを書いたことはないので、この用途に使えるマクロなど紹介していただけると助かります。 宜しくお願い致します。

  • エクセルで閉じるときのマクロ

    あるエクセルファイルがあり、 その一枚のシートにはオートフィルタ (A~Z列まで)を使用しています。 【質問1】 ファイルを保存して閉じる際、 オートフィルタで抽出したものを 「すべて」に戻す、 つまりなにも抽出されていない(=左端の行番号が黒字) に戻すマクロはどこにどのように書けばよいでしょうか? オートフィルタを戻すマクロは、 'オートフィルタのあるシートを選択 Sheets("買取リスト").Select 'T列のオートフィルタを「すべて」にする Selection.AutoFilter Field:=22 というところまでは理解できました。 【質問2】 上記のマクロを Sheets("顧客リスト") から、Sheets("商品リスト")へ移動した際、 ボタン等を使用せずに、 (ただ、下のタブをクリックするだけで) 実行させることは可能でしょうか? 可能であれば、どこにどのように記述すれば よいでしょうか??  よろしくお願いします。

  • エクセルの文字列置換マクロに関するご相談

    下方のマクロを実行することにより、 文字列リストの内容に基づいて、 別シート(作業)内の文字列を変換することができます。 文字列からコード値へ変換することを目的にマクロを埋め込んだのですが、 別シート(作業)の文字列をコード値に変換した際、3桁くぎりのコード値が並んだ場合に、 自動で数値として認識されてしまいます。 ※別シート(作業)のセルを文字列し設定しても発生します。 プログラムで回避手段があるようでしたらご教示いただければ幸いです。 例)文字列リストシート A B さる 10 ぞう 15 ごりら 101 きりん 102 わに 103 かば 104 マクロ実行前の作業シート A さる,ぞう ごりら ごりら,きりん,わに さる,ごりら マクロ実行後の作業シート A 10,15 101 101102103 10101 上記マクロ実行後のシートの3~4行目のように、 カンマが取れることを防ぎ、文字列として代入したい所存です。 <マクロ> Sub 文字列リストに基づき連続して置換する() i = 2 Do x1 = Sheets("文字列リスト").Cells(i, 1) x2 = Sheets("文字列リスト").Cells(i, 2) Sheets("作業").Cells.Replace _ What:=x1, Replacement:=x2, _ SearchOrder:=xlByColumns, MatchCase:=True i = i + 1 Loop Until Sheets("文字列リスト").Cells(i, 1) = "" End Sub ご教示いただければ幸いです。 よろしくお願いいたします。

  • オートフィルで抽出後削除するマクロ

    いつもお世話になっております。 あるエクセルの表(1行目見出し、2行目以降データ)で、 A列は1~10がランダムに入っています。 (約4,000行、作業の度に変化します) オートフィルでA列を『2以上』で抽出、 (ここまでのマクロは判ります) 見えてる行を全削除(1行目の見出しは取っておく) はどのようなマクロを記述したらいいでしょうか? よろしくお願いいたします。

  • フィルタオプションをマクロで

    1 テキストを読み込んで並べ替えなどして   表(1行目はタイトル)を作り、   フィルタをかける(マクロ) 2 フィルタオプションで必要なデータを抽出   その際に日付を手入力する   (例  A列(毎回決まった列)     2005/4/1以上 降順) 3 その後の作業(マクロ) このように1のマクロを起動して その後 2を手作業して 更に3をマクロを 起動すると言う方法をとっていますが 2の内容もマクロで作って 「日付」だけを 入力するように求められて それを入力するだけで その後の作業も自動で行うことは出来るでしょうか?

  • マクロの修正ができません

    エクセルのマクロで下記の作業をしています。 よくわからないまま使っているので障害箇所がわかりません。 教えていただけないでしょうか・・ 説明の仕方も下手で申し訳ありませんがよろしくお願いいたします。 [マクロの用途] ・別シートに請求データを作成しています。 ・請求番号を入力するセルに請求番号を入力します。 ・登録したマクロボタンを押すと抽出範囲に該当する請求書のデータが抽出されます。 [障害の内容] 請求データが4行以上になると、3行まで抽出され、 4行以降は抽出されません。 以下はマクロの内容です。 Sub 抽出() ' ' 抽出 Macro ' マクロ記録日 : 2007/2/19 ユーザー名 : ***' Dim myRow1 As Long, myRow2 As Long myRow1 = Sheets("データ").Range("B65536").End(xlUp).Row myRow2 = Sheets("抽出範囲").Range("B65536").End(xlUp).Row If myRow2 >= 5 Then Sheets("抽出範囲").Range("A4:Q40" & myRow2).ClearContents End If Sheets("データ").Columns("A:Q").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A4:Q40"), Unique:=True End Sub

  • マクロで別シートに数値を移したいのですが・・・

    タイトルにありますとおり、マクロを駆使し、数値を別シートに移したいのですが なにぶんマクロに関してほとんど経験、知識はありません。 毎回手動でコピーを繰り返しているのですが、なんとかマクロで自動コピーできればありがたいです^^; 方法としては、フォームのボタンにマクロを埋め込むような形にしたいと思っております。 以下のようなシートがあったとします。 シート1 (抽出内容”平均”)    A   B   C   D   E   F   G 1  回数 25 2  2   3   4   6   3   2   9   3 1行目に、回数とあります。今回は25回目のデータとします。 2行目に、同一シートの別表から抽出された数値が並びます。 この数値は別表でオートフィルで抽出された数字ですので、毎回変更されるものとします。 今回は仮に”平均”という内容で抽出したデータだとします。 シート1 (抽出内容”合計”)    A   B   C   D   E   F   G 1  回数 25 2  10 10  20  11  15  16  8   3 同じく、25回目、抽出内容”合計”として、オートフィルで抽出した数値です。 シート2     A   B   C   D   E   F   G   H 100 回数 平均(1) 2  3  4  6  3  2  9  101 25  平均(2) 102     平均(3)  103     合計(1)10 10 20 11 15 16 8 104     合計(2) 105     合計(3) 106 107 108 回数 平均(1) 109 26  平均(2) シート2は、シート1で抽出された数値をコピーした表です。 A列は今回の回数、25となっております。この数値はこれより上に24回分の表があり、今回が25回目という意味です。 107行目以降も26、27、28と回数は続いていますが、現状では25が最新とし、108行以降は数値はなく、空白とします。 それぞれ平均、合計共に、シート1で3回抽出し、それぞれ別の数値が入るものとします。 これまでは、シート1で抽出後、手動でコピーし、シート2の該当セルに貼り付ける、という作業でした。 シート1  →   シート2  のコピーにマクロを使用したいのですが 回数が25の場合、シート2でA列を検索し、さらに抽出内容が”平均”1回目だった場合 平均(1)にコピーし、2回目だった場合平均(2)にコピーする、といった具合です。 イメージとしては、シート1に、(1)、(2)、(3) と、それぞれ入ったリストボックスなどがあり [平均][合計] のそれぞれボタンがあり、(1)を選び、平均を押すと100行目の平均(1)に入り 合計を押すと、103行目の合計(1)に数値が入る。と、いうような感じです。 この説明で私の意図するところが伝わるか不安ではありますが、このような場合に使えるマクロの式がございましたら ご教示いただけませんでしょうか^^; 実際の表とは若干ちがいますが、大まかなイメージとしては上に書いてある通りです。

  • エクセルで文字列検索

    エクセルでB6から下に無制限で入力されたリストの中からB2、B3に入力された2つの文字列による部分一致、AND検索をかけて、該当するリストをオートフィルタの抽出のように表示させるシステムを作りたいと思っています。 説明が下手で申し訳ありません。 マクロで作ろうと思いましたがいろいろ調べながらやってみましたがなかなか思った通りにできませんでした。 上記のようなマクロはどうすればできますか?

専門家に質問してみよう