• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel(マクロなど)に関しての質問です)

Excel(マクロなど)に関する質問

このQ&Aのポイント
  • とあるデータを作成したいが手作業だとミスが発生する可能性が高いため、できる限り手作業を減らしたい。
  • シート1のデータをシート2のエリア名を入れ込んで完成させたいが、エリア名が多すぎて間違える可能性がある。
  • 自動化やミスを減らす方法、早くできる工程を知りたい。マクロを使用するが場合によってはデータがずれてしまう。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! 一例です。 Sheet2「区」のデータはA列の2行目からあるとします。 Alt+F8キー → VBE画面が出ますので、↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j, k As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row '※注 j = ws1.Cells(Rows.Count, 1).End(xlUp).Row - 4 If ws1.Cells(j, 2) <> ws2.Cells(i, 1) Then Range(ws1.Cells(j, 1), ws1.Cells(j + 4, 3)).Copy ws1.Cells(Rows.Count, 1).End(xlUp).Offset(1).Select ActiveSheet.Paste k = ws1.Cells(Rows.Count, 1).End(xlUp).Row - 4 Range(ws1.Cells(k, 2), ws1.Cells(k + 4, 3)) = ws2.Cells(i, 1) End If Next i Application.CutCopyMode = False ws1.Cells(Rows.Count, 1).End(xlUp).Offset(1).Select End Sub 'この行まで 尚、Sheet2の「区」のデータがA列の1行目からある場合は コード内の ※注 の行を >For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row に変更してみてください。 以上、参考になれば良いのですが 外していたらごめんなさいね。m(_ _)m

kakiska
質問者

お礼

ありがとうございます!おかげさまで色々間に合いました! 本当にありがとうございます!

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

その他の回答 (4)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 今仮に、Sheet2において「青葉区」と入力されているセルが、Sheet2のA1セルであるものとします。  まず、適当な空きシート(例えばSheet3)のA4セルに次の関数を入力して下さい。 =IF(INDEX(Sheet2!$A:$A,ROUNDUP(ROWS($4:4)/5,0))="","",IF(ISNUMBER(Sheet1!A$4),Sheet1!A$4,SUBSTITUTE(Sheet1!A$4,Sheet2!$A$1,INDEX(Sheet2!$A:$A,ROUNDUP(ROWS($4:4)/5,0)))))  次に、以下の操作を行って下さい。 Sheet3のA4セルにカーソルを合わせてマウスを右クリック   ↓ 現れた選択肢の中にある[コピー]をクリック   ↓ 名前ボックス(A1セルの上にある、選択したセル範囲等が表示される欄)に、 A4:C7503 などという具合に、Sheet1の表を全てカバーするのに充分なだけのセル範囲を入力 ※上記はエリア数が1500の場合の話で Sheet1の表の行数は3+1500×5=7503行が必要となります。 (カバーする範囲の方が広ければ、丁度同じだけの範囲である必要はありません)   ↓ A4:C7503のセル範囲が選択されている状態で、選択範囲を示す黒い太枠の内側にカーソルを合わせてマウスを右クリック   ↓ 現れた選択肢の中にある[コピー]をクリック   ↓ Sheet1のA4セルにカーソルを合わせてマウスを右クリック   ↓ 現れた選択肢の中にある[形式を選択して貼り付け]をクリック   ↓ 現れた「形式を選択して貼り付け」ダイアログボックスの「値」と記されている箇所をクリックして、チェックを入れる   ↓ 「形式を選択して貼り付け」ダイアログボックスの[OK]ボタンをクリック   ↓ 必要があれば、[形式を選択して貼り付け]機能を使用して、Sheet1の4行目の書式をコピーして、5行目以下に貼り付ける  細かく説明しているため長くなりましたが、実際の作業はあまり面倒なものではないと思います。  それに、Sheet3はそのまま何度でも使いまわす事が出来ますから、2回目以降の作業は、基本的にSheet1の4行目のみの入力と、[コピー]&[形式を選択して貼り付け]で値のみコピーだけとなります。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

ここへ質問する前に、マクロの記録を採って勉強しましたか。煩雑な作業を回答者にやってくれと丸投げしている。 マクロに記録で、1単位作業を(=シート2の1行分)マクロの記録を取り、考えること (1)まず3つのシートを扱う準備 Dim sh1, sh2, sh3 Set sh1 = Worksheets("Sheet1") ・・・ (2)シート1が、4-8行の固定なら何も難しい点が無い。 sh1.Range("A4:C8") ここの中でシート2の各行の語句で置換。その後シート3に貼り付け (3)シート2の各行分について単位作業を繰返す シート2の最終行(=全作業の終わり)は例えば Sub test01() d2 = Worksheets("Sheet2").Range("A65536").End(xlUp).Row ' d2=sh2.Range("A65536").End(xlUp).Row (1)を済ませた場合はこれ MsgBox d2 For i = 2 To d2 '処理 Next i End Sub ーーー (4)置換はマクロ操作で,どういうコードになるか分かる。 青葉区ー>緑区 緑区ー>○○区 のような順次置換になるだろう。 それか、A4:C8を原本部分と考えて、別セル範囲へ毎回コピーし、そこで置換(青葉区固定ーー>XX)して、シート3にコピー貼り付けも良い。 (5)コピー貼り付けは、(Paste方式は避け他方が良いが) Sub test03() Set sh1 = Worksheets("Sheet1") Set sh3 = Worksheets("Sheet3") 'Sheet1置換後(コード略) d3 = sh3.Range("A65536").End(xlUp).Row+1 sh1.Range("A4:C8").Copy sh3.Cells(d3, "A") End Sub 順次シート3で下方向に累積していく 各単位作業ごとに、シート3で1行とかあけるのかどうか、質問ではっきりしない。あけるならその手当てをする。d3の+1を調節する。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

シート1のB4に =INDEX(Sheet2!$A:$A,ROW(B5)/5)&"" と記入し,C4にコピー B4:C4をひたすら下向けにコピー。 A4に =IF(B4="","","神奈川") と記入し,ひたすら下向けにコピー。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

一例ですが Sub LCOPY() Dim RG As Range X = 4 For Each RG In Worksheets("シート2").RANGE("A1:A1500") If RG Is Null Then Exit Sub For i = 1 to 5 Cells(X,1) = "神奈川県" Cells(X,2) = RG Cells(X,3) = RG X = X + 1 Next i Next RG End Sub

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

関連するQ&A

  • EXCELのマクロにて

    EXCELのにて連続したデータを入力したデータベースがあります。(行が5000、列がAAまで) このデータベースのデータの最終行だけを指定して違うシートにコピー・貼り付けがしたいのです。 マクロにてこのような作業をするときにはどういった文をかけばよいですか。

  • エクセルマクロ Vlookupに似たマクロはありますか?

    度々すみません。 わからない事がいくつか出てきてしまって。どなたかご教示いただけると嬉しいです。 今は手作業で以下のような作業をしております。 データ元のシート(以下(1))とそれ加工して作るシート(以下(2))があります。 (1)のデータを2度sortするのですが、一度目のsortでtotalが入っている行は全てdelete。 残ったデータでもう一度sortし、種類別に並び変えます。 その後、コラムAがUSDである物はシート(2)のUSDページに貼り付け、コラムAがEURであればシート(2)のEURページに貼り付け・・・としていきたいのですが、マクロの記録を使おうにも、毎回コラムAは目視で確認しコピー・貼り付けをしていますのでマクロの記録は使えないですし、エクセル関数ではVLOOKUPがありますが、それをマクロに書き込む方法もどこにも載っておらず、どうしていいか息詰まった状態です。 sortするのはマクロの記録を使って作成できましたので、 ・コラムAがtotalになっている行より下はdelete ・コラムAがUSDならシート(2)のUSDシートへ貼り付け・・・ のマクロを作成したいです。 どうか宜しくお願い致します。

  • エクセル マクロ VBA

    エクセルのマクロについて質問です。 『集計』というブックの『集計開始』というシートに     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 コメント  空白     空白   3行目 空白   空白     空白 4行目 商品名  支店     個数  5行目 空白   空白     空白 6行目 空白   空白   コメント1 7行目 空白   空白     空白 8行目 空白   空白   コメント2 9行目以降    上記のデータ(見出しを除く)の繰り返し というデータが入っています。 B列の中に『AAA』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 C列の中に『B』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 (今は、手作業で編集→置換→検索する文字列の中に『B*』と入力し、 置換後の文字列を空白にしてすべて置換ということをやっています。)                            ABC列(データーの入っている行まで)の空白を含む行を一括削除し、 以下のような形にしたいのです。     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 商品名  支店     個数  3行目 商品名  支店     個数          ・         ・ このようにするマクロ文はどのようになりますでしょうか?

  • エクセル2010です。マクロ記述を教えてください。

    行番号1から12の任意のセルをコピーして貼り付ける場合ですが、 行番号13以降への貼り付けをしようとしても「制御されています。」というメッセージボックスが出て、しかも貼り付けが実行されない設定をしたいと思います。 また、 行番号13以降の任意のセルをコピーして貼り付ける場合も、 行番号1から12への貼り付けをしようとしても「制御されています。」というメッセージボックスが出て、しかも貼り付けが実行されない設定をしたいと思います。This Workbookにどんなマクロ記述をしたらよいですか? 教えてください。よろしくお願いします。

  • エクセル(マクロ)置換2 置換用リストを1行ずつ読み込むには

    おはようございます。 エクセルは使いなれてますがVBAは記録を使っていて 書き換える程度なので調べてもあまり理解できず困ってます。 先程質問して、結合セルの置換に関しては解決したのですが、 もし簡単にできるのであればと質問させて頂きました。 今置換用のシートは A列に置換前の文字 B列に置換後の文字が入ってます。 そして対象のシートが置換されるようになってるのですが、 これが列ではなく 1行目に置換前の文字 2行目に置換後の文字として処理するのには どこを書き換えればよろしいのでしょうか? 色々試しましたがうまくいきませんでした。 実は、1行目に(A1セルに学生名(1)・A2のセルに住所(1))など20個くらい項目があります 2行目以降に5000行程、学生のデータが入ってます。 各会社の履歴書フォーマットは違うのですが、 入力欄が学生名(1)や住所(1)など入っている項目が同じなので 置換しております。 今は、1行ずつ下のデータを置換シートに貼り付けて 履歴書のシートで置換えをして 新しいファイルにコピーし保存して次のデータという アナログな処理をしております。 同じフォーマット(履歴書)でしたらvlookupなどが使えたのですが。。。 フォーマットによって1つのセルに、学生名(1)と住所(1)が両方入っていたりするので諦めました。 対象セルの場所も形も違いますしね・・・ 列で処理していたマクロを参考に下に貼り付けました。 明日の昼までにあと4000行を処理しなければならなくて困ってます。 お手数ですがどうぞよろしくお願いいたします。 Sub 置換() With ThisWorkbook If ActiveSheet Is .Worksheets(1) Then Exit Sub For i = 1 To .Worksheets(1).Range("A500").End(xlUp).Row ActiveSheet.Range("A1:Z200").Replace _ What:=.Worksheets(1).Range("A" & i).Value, _ Replacement:=.Worksheets(1).Range("B" & i).Value, _ LookAt:=xlPart, SearchOrder:=xlByColumns Next End With End Sub

  • エクセル2013 マクロをご教示ください

    Sheet1 4行目に見出し。 5行目A列からU列までデータが入力されています。 中には空白セルもあります。 1行目から4行目迄はロックされています。 5行目以降の、あるセルをアクティブにすると、 該当行のC列からS列迄を Sheet2のA列を先頭に 5行目にコピペするには どうしたら宜しいでしょうか? Sheet2も4行目が見出しです。 Sheet1でのアクティブセルは 複数の場合もあります。 ただし、同じ行でセルを複数アクティブにしても Sheet2への貼り付けは1行とします。 よろしくお願いします。

  • 【再】エクセル2013 マクロをご教示ください

    Sheet1で選択しているセルの行をSheet2に転写したいです。 Sheet1とSheet2の4行目に見出し。 Shet1にはA~U列までデータがあります。(途中空白セルの場合もあり) Sheet1の5行目以降の、あるセルを選択してマクロを実行すると Sheet1のC~S列までをSheet2のA~Q列へコピペしたいです。 Sheet1は H列に必ずデータがあるので それらを最終行の判断基準とします。 Sheet1での選択セルは複数の場合もあります。 ただし、同じ行のセルを複数選択しても Sheet2への貼り付けは1行とします。 マクロを実行する度に、Sheet1での選択セルの該当行が Sheet2へ追加されるようにしたいです。 (Sheet2へコピペされたデータは残します) また、Sheet2への貼り付け内容が同じだった場合は 注意喚起のため メッセージで 「重複データが存在します」を表示したいです。 重複の判断基準はSheet2の B、D、F列とします。 宜しくお願い致します。

  • excelでの貼り付け

    excelでの貼り付けについての質問です。 連続した行ではなく、飛び飛びになっている行に1行ずつ貼り付けることは可能でしょうか。 たとえば、シート1の2、4、6行目をコピーするとします。(コピーするものはexcelでなくても、数行にわたっているものなら何でも構いません) それを、シート2にコピーするのに シート2の1行目←シート1の2行目 シート2の5行目←シート1の4行目 シート2の10行目←シート1の6行目 というようにしたいのですが、簡単な方法はないでしょうか。 シート2の1、5、10行目を反転させて貼り付けると1~3、5~7、10~12行目に2、4、6行目が貼り付けられてしまいます。1、5、10行目以外にもデータが入っているため他の行にデータが上書きされるのは困ります。1、5、10行目は何度も上書きするので、飛ばしたい行には0を入れておいて加算で貼り付けということもできません。 これを実現させるにはマクロしかないでしょうか?

  • エクセル マクロ

    エクセルでマクロを組んでるのですがシート1のデータをコピーしてシート2のデータを入力している最終行の次の行にコピーしたいのですが最終行まではEND 下⇒キーで行くのはわかりますが、その次の空白行への移動のやり方がわかりません

  • Excelマクロについて

    マクロについて質問をさせていただきます。 A1~10にデータが入力されています。 その中である特定の文字が入っている行をシート2にコピー(移動でもかまいません)するようなマクロはどのように作成すればよろしいでしょうか?? 宜しくお願いいたします。

専門家に質問してみよう