• 締切済み

VGAを教えてください。

sheet1のデータを下記のように自動で振り分けたいです。 sheet1(元データ) A       B        C  拠点     担当者     金額 本店     田中       12,000 支店1    山田       16,000 支店2    鈴木       10,000 本店     田中       14,000 本店     下請A      20,000 支店2    下請B      15,000 sheet2(拠点) A         B         C 本店      支店1      支店2 12,000     16,000     10,000 14,000               15,000 20,000 sheet3(担当者(社員)) A           B          C 田中       山田       鈴木 12,000      16,000      10,000 14,000 sheet4(担当者(下請)) A          B        C 下請A      下請B 20,000      15,000 担当者名は随時変わります。 宜しくお願いします。

みんなの回答

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

こんにちは、参考に Sub Test() Dim ws As Worksheet, ws1 As Worksheet Dim c As Range Dim myC As Variant Set ws1 = Worksheets("Sheet1") For Each ws In Worksheets(Array("Sheet2", "Sheet3", "Sheet4")) 'Sheet2~4の消去 ws.Cells.ClearContents Next For Each c In ws1.Range("A2", ws1.Cells(Rows.Count, "A").End(xlUp)) '拠点処理 With Worksheets("Sheet2") myC = Application.Match(c.Value, .Rows(1), 0) If IsError(myC) Then myC = .Cells(1, Columns.Count).End(xlToLeft).Column + 1 If .Cells(1, myC - 1).Value = "" Then myC = myC - 1 .Cells(1, myC).Value = c.Value .Cells(2, myC).Value = c.Offset(, 2).Value Else .Cells(Rows.Count, myC).End(xlUp).Offset(1).Value = c.Offset(, 2).Value End If End With '担当者処理 If Not c.Offset(, 1).Value Like "下請*" Then With Worksheets("Sheet3") '社員 myC = Application.Match(c.Offset(, 1).Value, .Rows(1), 0) If IsError(myC) Then myC = .Cells(1, Columns.Count).End(xlToLeft).Column + 1 If .Cells(1, myC - 1).Value = "" Then myC = myC - 1 .Cells(1, myC).Value = c.Offset(, 1).Value .Cells(2, myC).Value = c.Offset(, 2).Value Else .Cells(Rows.Count, myC).End(xlUp).Offset(1).Value = c.Offset(, 2).Value End If End With Else With Worksheets("Sheet4") '下請 myC = Application.Match(c.Offset(, 1).Value, .Rows(1), 0) If IsError(myC) Then myC = .Cells(1, Columns.Count).End(xlToLeft).Column + 1 If .Cells(1, myC - 1).Value = "" Then myC = myC - 1 .Cells(1, myC).Value = c.Offset(, 1).Value .Cells(2, myC).Value = c.Offset(, 2).Value Else .Cells(Rows.Count, myC).End(xlUp).Offset(1).Value = c.Offset(, 2).Value End If End With End If Next End Sub

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

VGAは640*480ドットの解像度ですね(^^; データが下に追加されるとして、ピボットテーブルを考えてみました 社員か下請け化が分からないので、C列に分類を追加しました。 また、A列のデータは、空白にならないこととします 作業列 E2セルに =COUNTIF(A$2:A2,A2) 隣のF2セルまで右へオートフィル、下へオートフィル [Ctrl]+[F3]名前の定義 名前 : PT_DATA 参照範囲  =Sheet1!$A$1:INDEX(Sheet1!$F:$F,COUNTA(Sheet1!$A:$A)) データ - ピボットテーブルとグラフレポート 1/3 [次へ] 2/3 範囲:PT_DATA [次へ] 3/3 [レイアウト] ページ:分類、行:担当PT、列:担当者、データ:金額 [OK][完了] 拠点も同様です。総計は消すことが可能です。H列は非表示で良いでしょう。 ピボットテーブルツールバーから[更新]ボタンをクリックして、データの追加削除に対応できます。 ピボットテーブルのシートを表示させたときに、データを更新させるマクロを仕込んでおくと便利です。 添付図参照、参考まで

全文を見る
すると、全ての回答が全文表示されます。
  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.1

>VGAを教えてください。 VGAではなくVBAね Visual Basic for Appli >sheet1のデータを下記のように自動で振り分けたいです。 どこまで自動にしたいかだけど、 素直に、ピボットテーブルを3つつくるのが楽ではないですか?

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

関連するQ&A

  • エクセル2010での質問です。

    下記のような【会社】というシートがあります。 [A社]がA1セルです。 [A社][A支店][田中][鈴木] [B社][B支店][山田][加藤] [C社][C支店][小野] [A社][D支店][島田][今田] [B社][E支店][佐藤][山本] [C社][F支店][小山][三浦] 別のシートのA1に、【会社】のシートA列の文字を重複させずにプルダウンを作成し、[A社]を選ぶと 別のシートのB1に、【会社】シートのB列を探し、A支店・D支店のプルダウンを作成し、[A支店]を選ぶと 別のシートのC1に、【会社】シートのCD列を探し、[田中][鈴木]のプルダウンを作成する。 VBAでこのようなことは出来ますか? 説明が下手で申し訳ございません。

  • エクセル あるコードを含む行ごと、他のシートに反映させたい。

    こんばんは。 エクセルで以下のような表を作成しています。 [シート1]   A列   B列   C列  D列 1 コード  担当   日付  ・・・ --------------------------------------- 2 S679   山田   9/1  ・・・ 3 S679   田中   9/2  ・・・ 4 S680   山田   9/2  ・・・ 5 S679   鈴木   9/4  ・・・ ・ ・ ・ また、[S679]・[S680]というシートを作成し、 [シート1]のA列にコードを入力するごとに、該当のシートに行ごと データを反映させる方法はありますでしょうか。 上の例でいくと、 [S679]シートには   A列   B列   C列  D列 1 コード  担当   日付  ・・・ --------------------------------------- 2 S679   山田   9/1  ・・・ 3 S679   田中   9/2  ・・・ 5 S679   鈴木   9/4  ・・・ というように。 [シート1]にデータを入力するごとに、 該当コードの列のデータを[S679]・[S680]シートに反映させる方法があれば、 どうぞご教示をお願いします。 文中の至らぬ点はご指摘いただければ都度補足いたしますので、 よろしくお願いいたします。

  • エクセルデータベースの結合について

    2つのエクセルデータを結合したいのですが、欠番があり、うまくいきません うまく説明できなく、分かりにくくて申し訳ありませんが、具体的には   A   B    C             A    B    C        1 No. 氏名  1月金額         1 No.   氏名  2月金額     2 001 田中  500           2 002  山田   100 3 002 山田  300    と      3 003  鈴木   150 4 003 鈴木  200            このようなそれぞれのデータがあります。右のデータはNo.001田中が欠番になってます。 このままコピーして貼り付けると一行ずれてしまします。ずらして貼り付ければいいのですが、数百人ぐらいのデータで、かなりの欠番がありますので手作業でずらして貼り付けるには効率的でなく大変です。  A   B    C      D                1 No. 氏名  1月金額   2月金額           2 001 田中  500     空欄       3 002 山田  300     100       4 003 鈴木  200     150      のように自動的に結合する方法があれば教えていただきたいのですが、なにぶん初心者なもので困っております。なにとぞ宜しくお願い致します。

  • Excel上でのセルの並び替えについて

    Excel2007にて下記作業は可能でしょうか? (シート1) A1   B1   C1   D1 田中  ○   鈴木  △ A2   B2   C1   D2 浜田  ×        A3   B3   C1   D3 後藤  ○   加藤  × ↓ (シート2) A1   B1   C1 田中  ○ A2   B2   C2 鈴木  △ A3   B3   C3 浜田  ×    A4   B4   C4 後藤  ○ A5   B5   C5 加藤  × 上記のとおり別シートに自動で並び変える数式はあるのでしょうか? データの量が多いのと、Excelの操作ができない人用に自動化したいのですが。

  • 複数のシートのセル内容をひとつにまとめたい

    複数のシートのセル内容をひとつにまとめたいと思っています。 Sheet1        Sheet2      Sheet3 1 山田 ¥100  1 山田 ¥80  3 鈴木 ¥80 2 佐藤 ¥130  2 佐藤 ¥55  4 田中 ¥150 3 鈴木 ¥110  4 田中 ¥60 こんなデータを Sheet4 1 山田 2 佐藤 3 鈴木 4 田中 とまとめたいんです。 金額は必要ないので、番号と名前だけをまとめたいんです。 どうすれば良いか、教えてください。 よろしくお願いします。

  • EXCELの関数の入力の仕方

    私の知識不足の為どうすればいいのか困っています。どうぞお願いします。 シート1に   | A  | B | C | D | --|-----|----|----|----|--- 1 |田中 |   |   |   | --|-----|----|----|----|--- 2 |佐藤 |   |   |   | --|-----|----|----|----|--- 3 |鈴木 |   |   |   | --|-----|----|----|----|--- 4 |山田 |   |   |   | シート2に   | A  | B | C | D |  E |  F    --|-----|----|----|----|----|---- 1 |    | 1  | 2  | 3  | 4   | 5 --|-----|----|----|----|----|---- 2 |田中 |   |   |   |   |   --|-----|----|----|----|----|---- 3 |佐藤 |    |   |    |   |   --|-----|----|----|----|----|---- 4 |鈴木 |    |   |    |   |  --|-----|----|----|----|----|---- 5 |山田 |    |   |    |   | とあったとします。(シート2の横に並んだ数字は日にちです。) (シート1は入力用シート、シート2は印刷用シートとして使います。) 例題として、田中さんは2日と3日が入院。5日が外出すると仮定して、 シート1のB1に"2n"、C1に"3n"、D1に"5g"と入力したら、 シート2のC2に"入"、D2も"入"、F2が"外"と表示させたいの です。 色々試行錯誤しましたが、一向にできず、困っています。 お手すきの時がありましたら、回答お願い致します。

  • エクセルで2つの条件を元に

    エクセル2007で名簿を作っています。 1ヶ月ごとにメンバーの順が変わります。 シート1(番号順に名簿を作りました)   A  B   C  1 1     山田 2 2     木村 3 3 副長 佐藤 4 4     鈴木 5 5 班長 田中 6 6     長田  シート2(こちらがメンバーに配る名簿です)   A   B  C   D 1 班長    1    3 2 田中    山田  鈴木 3 4 副長    2    4 5 佐藤    木村  長田 A2に田中,A5に佐藤を選んでくるのはvlookupで成功しました。 質問したいのは C列D列に上記の番号のようにシート1の名前を入れていきたいのですが,田中,佐藤の分を抜いた上で番号の若い順に選んできたいのです。 どのような関数をどのように使えば成功するでしょうか。  

  • エクセルでグループ分け

    お知恵を貸してくださいよろしくお願いします。 A:グループ名 B:性別 C:名前 が100人分横で入っています。 それを、グループごとに分けて、縦の一覧にしたいのです。   A B C 1 A 男 佐藤 2 C 女 山田 3 B 女 田中 4 A 女 鈴木   ↓(別シートに)   Aグループ   Bグループ   Cグループ 1 男 佐藤    女 田中    女 山田 2 女 鈴木 3 4 このように抽出して、並び替えることを関数をつかってできないでしょうか。よろしくご教示ください。

  • エクセルで月ごとの複数データを別シートに抽出したい

    エクセル2007で、sheet1に元となるデータがあり、その中からsheet2に月毎に列でまとめて、しかも日付順に並ばせたいと思っています。 まず、下記がsheet1のデータ例です。 -------------------------------------------- [sheet1]    A列     B列          C列      D列 1  名前     レンタル希望    血液型    担当 2  山田太郎  2013/9/12     A型      営業  3  鈴木花子  2013/8/1      B型      開発 4  山下健    2013/9/10      O型     広報 -------------------------------------------- 上記のような、随時追加・修正されていくデータです。 それを、下記のようにsheet2にB列(レンタル希望日)の月で検索し、B列の日付順でA列(名前)とB列(レンタル希望日)を随時表示させていきたいです。 -------------------------------------------- [sheet2]    A列      B列         C列      D列 1  8月レンタル            9月レンタル 2  名前      レンタル希望   名前     レンタル希望 3  鈴木花子   2013/8/1     山下健    2013/9/10 4                     山田太郎   2013/9/12 -------------------------------------------- このような形でsheet1を変えたものをレンタル希望日を基点にとして 随時並ばれていて、この月はこのぐらいの希望がこの人からあるのか(あったのか) というのがわかるような管理表を作りたいと思っています。 フィルタオプション等をいろいろ試してみましたがうまくいかず、 また、なかなかマッチするQAが見つからず困っています。。。 どうかよろしくお願いします!

  • Excelの式が上手く行きません。

    色々調べてみたんですが、上手く行かないので質問させてください。         1日目            2日目 セルの列「C15」「C16」「C17」  「C18」「C19」「C20」  田中さん 「 」「A」「A」         「 」「A」「A」 鈴木さん 「 」「A」「A」         「 」「 」「 」 こんな感じでセルに入力したものを、次のシートで自動的にリストが作成されるように式を作っています。 1つのセル内に、 (1)田中さんのみが「 」「A」「A」のとき、田中さんの名前が出る。 (2)鈴木さんのみが「 」「A」「A」のとき、鈴木さんの名前が出る。 (3)田中さん・鈴木さんともに「 」「A」「A」のときは、田中さんと鈴木さんの名前が並んで表示される。 という3つの条件をすべて満たせる式を作りたいのですが、どうしても上手く行きません。 方法I:2つの式の間に「&」を入力した場合。 =IF(AND(Sheet1!R4C15="",Sheet1!R4C16="",Sheet1!R4C17="A"),Sheet1!R4C4&IF(AND(Sheet1!R5C15="",Sheet1!R5C16="",Sheet1!R5C17="A"),Sheet1!R5C4,)) これだと、 (1)田中さんのみが「 」「A」「A」のとき、田中さんの名前が出る⇒○ (2)鈴木さんのみが「 」「A」「A」のとき、なにも表示されない⇒× (3)田中さん・鈴木さんともに「 」「A」「A」のときに、田中さんと鈴木さんの名前が並んで表示される⇒○ となって、(2)が上手くいきません。 方法II:2つの式の間に「&」、1つ目の式の最後に「,""」(該当しない場合は空白を表示)を入力した場合。 =IF(AND(Sheet1!R4C15="",Sheet1!R4C16="A",Sheet1!R4C17="A"),Sheet1!R4C4,""&IF(AND(Sheet1!R5C15="",Sheet1!R5C16="A",Sheet1!R5C17="A"),Sheet1!R5C4,)) これだと、 (1)田中さんのみが「 」「A」「A」のとき、田中さんの名前が出る⇒○ (2)鈴木さんのみが「 」「A」「A」のとき、鈴木さんの名前が出る⇒○ (3)田中さん・鈴木さんさんともに「 」「A」「A」のときに、Bさんの名前が出ない。⇒× となって、(3)が上手くいきません。 (1)・(2)・(3)を全てクリアする方法はありませんでしょうか・・・。 知識がないもので、もしかしたら式自体がもっといい方法があるのかもしれませんが・・・。 最終的には人数を増やして、 他のセルでは「A」「 」「 」や別のローマ字「 」「 」「B」の条件に当てはまる名前を表示させて、 自動でリスト化できるようにしたいと考えていますが、これは式の問題が解決すれば応用でいけると思います。 本当は別のセルに「1」と入れれば1日目(C15・16・17)を参照して、「2」と入れれば2日目(C18・19・20)を参照するように作りたかったのですが、これは方法がわからないので諦めています。 困っています。どなたかわかる方いらっしゃいましたら教えてください・・・。

専門家に質問してみよう