• 締切済み

繰り返しコピペ(1部内容変更して)

Excel2013使用です。 添付した画像のようなデータと、実際には別シートに名簿というテーブルデータがあります。 やりたいことは、担当列に全員と入力されていた場合該当する行を名簿の人数分コピーしてデータの下に貼り付けし、かつ担当列の値を名簿の人名に変えたいというものです。 担当列に「、」で区切られたデータは下記サイトを参考に分割、コピペ出来たのですが上記がうまい処理が思いつかず行き詰まってしまいました。 お知恵をお貸しください。よろしくお願い致します。

みんなの回答

  • SI299792
  • ベストアンサー率48% (721/1492)
回答No.2

下記サイトというのが解りませんが、 特に関数でという指示が無いのでVBA で作りました。 Sheet1、元データ Sheet2、結果 Option Explicit ' Sub Macro1()   Dim S As Worksheet   Dim ROut As Long   Dim RInp As Long   Dim ROuC As Long   Dim RInC As Long   Dim What As Variant '   Set S = Sheets("Sheet1")   RInC = S.Cells(Rows.Count, "F").End(xlUp).Row - 1   Sheets("Sheet2").Select   ROut = 2   Range("A2:D" & Rows.Count).ClearContents '   For RInp = 2 To S.Cells(Rows.Count, "C").End(xlUp).Row     What = S.Cells(RInp, "C")     ROuC = 1 '     If What = "全員" Then       Cells(ROut, "C").Resize(RInC) = S.[F2].Resize(RInC).Value       ROuC = RInC     Else       What = Split(What, "、")       ROuC = UBound(What) + 1       Cells(ROut, "C").Resize(ROuC) = WorksheetFunction.Transpose(What)     End If     Cells(ROut, "A").Resize(ROuC, 2) = S.Cells(RInp, "A").Resize(, 2).Value     Cells(ROut, "D").Resize(ROuC) = S.Cells(RInp, "D")     ROut = ROut + ROuC   Next RInp End Sub

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

担当列に「、」で区切られたデータがあれば出来るとのことなので; 1.営業所+所属の文字列をキーとし、その部署全員の名前を「、」で区切った全員名簿を作成し、キーでソート(昇順)します。   大阪営業2   神田、東野、長谷川   東京営業   鈴木、佐々木 2.次にデータを全員の行が連続して並ぶように担当でソートします。 3.最初の全員のセルにVLOOKUP関数で全員名簿を参照する計算式を入れます。   VLOOKUP(営業所のセル&所属のセル、全員名簿、2、FALSE) 4.正しく参照できたら計算式を最後の全員のセルまでコピーします。 5.最後に計算式が入ったセル全体をコピーし、そのまま値の貼り付けをします。 これで全員のセルが「、」で区切られた名前に置き換わります。

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

関連するQ&A

  • EXCELでデータを抽出してコピペしたいです

    指定した日付より、それ以前の誕生日(指定日も含む)の人だけを抽出してコピペしたいのですが WORKBOOK1のSHEET1(名簿)のH列に生年月日(他の列にもデータあります) データは、1200件(行)あります。 WORKBOOK2のSHEET1(該当者)名簿と配列は同じです。 A1に指定の日付をいれます。 WORKBOOK1のSHEET1(名簿)より抽出したデータのペースト位置は、A3からです。 VBAで可能でしょうか?

  • XPhome Office2002 Excel です

    XPhome Office2002 Excel です あらかじめSheet5の列と行の幅をSheet4と同じにしておいて Sheet4のデータをコピペし、うまくいったのですが 再起動後、Sheet5を開いてみると貼り付けたデータが消え 列・行間がコピペ前の状態に戻っているのですが コピペを有効にするには、どうすればよいのでしょうか? よろしくお願いします。

  • エクセル 間隔が空いたデータをその間隔のままコピペ

    A列の5行目から10行目までのデータと D列の5行目から10行目までのデータと G列の5行目から10行目までのデータのデータをコピーし、 それぞれをB列、E列、H列(ひとつ右側の列)に貼り付けたいのです。 (実際にはG列以降の列もコピペしたいのですが、例としてA、D、G列にしてあります) 普通にB列に貼ると、B、C、D列に貼られてしまいます。 また、書式は貼りたくないので、値のみの貼り付けにしたいのです。 今はやり方が分からないので、A列をコピペ、D列をコピペ、・・・と列毎に処理して いますが、一度にまとめてコピペするにはどうすれば、良いのでしょうか?

  • エクセルVBAのコードの書き方を教えてください

    エクセルVBAの初心者です。 下記①-⑲のようなコードを書きたいのですが、どなたかお分かりになる方がいましたら、 ご教示いただけますと幸いです。 ① オートフィルターでシート[list]のA列に"●"がある特定の行だけを以下作業の対象にしたい ② ①で特定した行のE列セルの値を、シート[output]のB9セルにコピペする ③ ①で特定した行のF列セルの値を、シート[output]のB12セルにコピペする ④ ①で特定した行のG列セルの値を、シート[output]のB15セルにコピペする ⑤ ①で特定した行のH列セルの値を、シート[output]のB18セルにコピペする ⑥ ①で特定した行のI列セルの値を、シート[output]のB21セルにコピペする ⑦ ①で特定した行のJ列セルの値を、シート[output]のB24セルにコピペする ⑧ ①で特定した行のK列セルの値を、シート[output]のB27セルにコピペする ⑨ ①で特定した行のL列セルの値を、シート[output]のB30セルにコピペする ⑩ ①で特定した行のM列セルの値を、シート[output]のB33セルにコピペする ⑪ ①で特定した行のN列セルの値を、シート[output]のB36セルにコピペする ⑫ ①で特定した行のO列セルの値を、シート[output]のB39セルにコピペする ⑬ ①で特定した行のP列セルの値を、シート[output]のB42セルにコピペする ⑭ ①で特定した行のQ列セルの値を、シート[output]のB45セルにコピペする ⑮ ①で特定した行のR列セルの値を、シート[output]のB48セルにコピペする ⑯ ①で特定した行のS列セルの値を、シート[output]のB51セルにコピペする ⑰ ①で特定した行のT列セルの値を、シート[output]のB54セルにコピペする ⑱ ①で特定した行のU列セルの値を、シート[output]のB57セルにコピペする ⑲ シート[output]のB3:B59をテキストファイルを呼び出してコピペする ※このとき、上記②-⑱で記述したB9からB57のセルには改行が含まれる場合が  あるため、テキストファイルへのペースト時に""が表示されてしまうが、  もし可能であれば、この""が表示されないようにしたい。

  • Googleスプレッドシート コピペしたら消える

    スプレッドシートで顧客の集計表を作成しています。 1行に3列ほど関数を入れてほかのシートと関連付けるようにして、新規は基本手打ちで全て入力、既存であれば過去の分を新しい行にコピペして増やして日付などを手入力で調整していく予定です。 (エクセルではそうしてました) 添付の画像をもとに説明しますと、2675行に情報を入力をする際、手打ちでE2675に番号「2222」と入力するとF2675に「アイウエオ」と表示されるのですが、2674行を行ごとコピーして2675行に貼りつけると、F2674より上のF列の担当名が消えてしまいます。 I行の広告分類でも同じことがおきます。 F2674をF2675にコピペしても、F2674より上のF列の担当名が消えてしまいます。 1つずつ手入力で式が入った行を触らなければ問題ないのですが、それだと効率が悪いので行ごとコピーしても他のデータが消えないようにしたいので、アドバイスありましたらよろしくお願いいたします。 ちなみにF4に入力している式は以下になります。 = ARRAYFORMULA(IFERROR(VLOOKUP(E4:E,importrange("1gqyPrKXmGqS11MMAK3AYpykcnle-DlR09msl2oxxxxx", "担当マスタ!B3:D100"),3,FALSE)))

  • VBAでコピペした値がコピペ先の書式で表示できない

    こんにちは、お世話になっています。 表題のとおり、VBA内でコピペした値が、コピペ先の書式で表示ができなくて困っています。 状況としては、「指定したシート1上の範囲内のセルの文字列をコピーし、シート2で指定したセル内にペーストする」ということを行いたいのですが、貼り付けた値はコピペ元の書式で表示されてしまい、一度各セルをアクティブにしないとシート2の書式が適用されません。 どうすればアクティブにしなくても正常表示できるか、お知恵を貸してください。 なお、作成にあたり以下の条件があります。 (1)運用時に全シートはパスワード保護されるため、値に対しての入力や修正、及びショートカットやボタンによる動作は不可 (2)コピー元の書式は「文字列」固定、コピー先の書式は「ユーザー定義」固定で、さらに各行ごとに定義が異なる (3)当マクロはファイル呼出時に自動的に実行される 以下、ソースコードになります(Excel2003 SP3、VB6.5で作成) Dim first_Row As Integer 'シート1のデータ先頭行 Dim first_Col As Integer 'シート1のデータ先頭列 Dim last_Row As Integer 'シート1のデータ最終行 Dim last_Col As Integer 'シート1のデータ最終列 Dim first_KeyNo As Integer 'シート2のキー番号先頭行 Dim last_KeyNo As Integer 'シート2のキー番号最終行(今回省略) (中略、↑のデータを各ワークシートからセット) Dim i As Integer 'シート1のカウント用変数 Dim k As Integer 'シート2のカウント用変数 i = first_Row k = first_KeyNo 'データ最終行になるまで処理を繰り返す Do While(i >= first_Row and i < last_Row)      'シート1と2のキーNoがイコールならセット      If Worksheets("シート1").Cells(k, 1).Value = Worksheets("シート2").Cells(i, 2).value Then           Worksheets("シート1").Range(Cells(i, first_Col),Cells(i, last_Col).Copy           Worksheets("シート2").Range(Cells(k, 1),Cells(k, 20).PasteSpecial paste:=xlValues           Application.CutCopyMode = False      'イコールでないなら、イコールになるまでシート2のキー番号を検索      ElseIf Then           (中略)      EndIf      i = i + 1      k = k + 1 Loop VBAは今回初めて作成するので、見づらいかと思いますがよろしくお願いいたします。

  • Accessで、複数のテーブルからデータを繋げたい

    ■テーブル1 2011年データ 行:名前 列:年月日 201101~201112 行:商品名 値:件数 ■テーブル2 2010年データ 行:名前 列:年月日 201001~201012 行:商品名 値:件数 となっております。 列を伸ばして、201001~201112までのデータにしたいのですが クエリの組み方が不明です。 ネットでサーチはしたのですが、該当のものが出てこず、良ければ教えて下さい!

  • 変数により参照セルを移動させ、その値をとる方法

    お世話になります。 シートを新規コピーしてこのシートのA1に、 「社員名簿シート」のA1の値(文字列)をコピーします。 その後、もう一枚新規シートをコピーしてこのシートのA1に、 「社員名簿シート」のA5の値(文字列)をコピーしたいと思います。 社員名簿シートには1行目、6行目、11行目と5行間隔で 社員名が入っています。 この場合、変数によりシート列行を指定していくには どのような記述が適当でしょうか。

  • 【Excel】一致するデータの検索

    Excel2003を使用しています。 Sheet1のB列の値がSheet2のA列に入力されている値と一致したら、Sheet1のC列とD列の値をSheet2のC列とD列に表示させたく、VLOOKUP関数を使用したところ、Sheet1のB列とSheet2のA列のデータの並び方(順序)が同じではないためか、VLOOKUP関数ではできませんでした。 こういう場合、マクロで処理することは可能でしょうか?可能であれば、どのようにコードを記述すればいいでしょうか? Sheet1のデータは4行目から、Sheet2のデータは6行目から入力されています。 よろしくお願いします。

  • Excelで他Bookにデータを出力する時

    お世話になります。 Microsoft Excel 2002を使ってサークルの名簿を作っている初心者です。 サークルの会員20人おのおのにSheet1に入力してもらった情報を Sheet2で「=Sheet1!A1」「=Sheet1!A2」・・・と、作成する名簿の形式通りに反映されるようにしているBook1を配布しました。 全員に入力してもらったExcelデータが20個あります。 これを1つのExcel(Book2)にまとめたいです。 Book1のSheet2はまとめる時の形式になっているので、これをコピペして20回繰り返しBook2に貼り付ければすぐにできる と思っておりましたが、実際にBook2に貼り付けて見ると、 ='[Book1.xls]Sheet1'!A1 となってしまいました。 どうしたら Book1のSheet2をBook2にコピペするだけで名簿が完成するでしょうか。 Book1のSheet2に表示されている通りにコピーできれば良いのですが・・・。 初心者で申し訳ありません。 どなたかアドバイスいただけますと幸いです。 宜しくお願い致します。

専門家に質問してみよう