• ベストアンサー

繰り返し処理でセルの結合表示

繰り返し処理でセルの結合表示 VBAの初心者です。 例えば、参照シートにA列、B列それぞれ苗字と名前が入力されてあり 数百人分の氏名が1行ずつ入力されてあるとします。 その情報を異なるシートに苗字と名前をA列に結合させ、10行間隔で 表示させる繰り返し処理を行いたいのですが、何方か教えていただけると 助かります。 よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

まづ(1)参照シートとアウトプットシートの区別の書き方わかりますか。セルの結合を質問する前に、両者のセルの書き分けが必要なのはわかりますね。 (2)参照シートで、ForNextで全データ行を1行ずつ指し示すコードはわかりますか 「エクセル FOR NEXT VBA」(以下「」内の語句でGoogleででも照会) (3)参照シートの最終行の捉え方のコードは判りますか。出来ないと最下行までいってしまう。 「エクセル 最終行 VBA」 (4)アウトプットシートの行は 参照シート  アウトプット(行番号) 1      1 2      11 3      21 ・・ のように書き出すのですね。 参照シートからアウトプットの行を割り出すのは計算できますか。中学校の数学の数列の問題だよ。 (5)苗字と名前の結合した文字列はどういう式で作りますか 「文字列 結合 VBA」こんなの文法(演算子)の最初に出てくること。 (6)アウトシートにそれを代入するのはどういうコードになるか。 === 上記の「 」内のキーワードでGoogle照会してみること。沢山記事があり、実例説明があるので判るだろう。 そういうことを自分でして、わからない点に絞って質問しないと。

iwat777
質問者

お礼

とてもわかりやすい説明ありがとうございました。 VBAを初めて3日目なもので、的を獲た質問すら出来ず失礼いたしました。

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

その他の回答 (1)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

文字列を結合させる演算子は & あとは、A列を上から順に無くなるまで舐めて、その行番号がrだとしたら、異なるシートのr*10行目に結合させた文字列を入力すれば良いです。 初心者でもこの程度の説明で解りますよね?

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

関連するQ&A

  • 結合したセルを1つのセルにコピーしたい

    1行目のABCDE列を結合し「あいうえお」と入力します。 同じく1行目のFGHIJ列を結合し「かきくけこ」、KLMNO列を結合し「さしすせそ」と入力します。 これらをコピーして別のシートに貼り付けたいです。 別のシートの1行目のA列に「あいうおえ」B列に「かきくけこ」C列に「さしすせそ」と入力したいのですが、どうすればいいのでしょう。 エクセル2007を使用しています。 よろしくおねがいします。

  • エクセル2003 VBAで セル内を 一発呼び出し

    エクセル2003 オートフィルタではなく VBAで セル内を 一発呼び出ししたいので。  よろしく お願いします。 表 列A~E(結合2行) :商品名と内容   列H~K(結合2行) 住所氏名電話番号を記載してます。 1年分を オートフィルターで  氏名 や 商品名で 探すのは 結構 時間がかかります。 同じものが ほぼ少ないため。。。 そこで  たまに 同じ氏名  同じような 品を 検索する セルを 2個ほど作って  そこへ セル1へ 商品名を入力すると  該当する 行のみ 表示される。 セル2に 名前をを入力すると  該当する 行のみ 表示される。 また、セルを赤色に塗った部分の結合行(2~3行)を 赤色に塗りつぶした行のみ 表示も できれば うれしいです。 コマンドボタン等を使ってもいいので お願いします。 そんな VBAを 作っていただけませんでしょうか^^; お手数おかけしますが どなたか よろしく お願いします。 

  • エクセルマクロでセルの結合をしたい

    エクセル2003です。 E列の値は昇順で並んでいます。 先頭E3行から下の行の値と比較し 同じ値の場合はセルを結合し 値が違う場合は結合しないで次の行を比較という処理を 最終行まで行いたいです。 (添付画像参照) 例えば E3-AA E4-BB E5-BB E6-CC E7-DD E8-EE E9-EE E10-EE E11-FF セルE4とE5を結合します セルE8とE9とE10を結合します。 次に結合した行と同じ行数のF列を結合します。 さらに結合した行と同じ行数のG列を結合します。 上記の場合 セルF4とF5を結合、 セルF8とF9とF10を結合します。 セルG4とG5を結合、 セルG8とG9とG10を結合します。 さらに結合した行と同じ行数のA列を結合します。 上記の場合 セルA4とA5を結合、 セルA8とA9とA10を結合します。 さらに結合したA列に数字を入力します A4とA5を結合したA4、A5セルには 2行を結合したので2と入力 セルA8とA9とA10を結合したA8、A9、A10セルには 3行を結合したので3と入力。 とりあえず、E列の結合を完成させてそのE列を 3行目から最終行までコピーして、 「形式を選択して貼付」の「書式」で 書式のみをF,G,A列にコピーすれば出来るのではと 以下の構文を作成しました。 セルの結合時は結合するセルの先頭の行の値が結合済セルの値に なるので最初にE列を結合していく時に A列に結合回数を記入しようと考えました。 ただ2行の結合は、A列に2と入力されたのですが 3行連結した時も2と入力されてしまったので改造しました。 テストデータでは期待しているようになったのですが 本番データでは結合される行が4行、5行等それ以上の行数が 結合する場合が有りこの構文ではなるべくしてなっているのですが 4行以上の行結合はA列の値はいずれも3になってしまいます。 (添付画像参照) どう修正すればいいか手段が考え付きません。 どのような方法がありますでしょうか? よろしくお願いします。 Sub セル結合2() '2013年10月25日 Dim 最終行 As Integer Dim 処理行 As Integer Dim 比較行 As Integer Dim 確認値 As Variant Dim 比較値 As Variant Dim 結合回数 Dim 戻行 Application.ScreenUpdating = False ThisWorkbook.Sheets("Sheet1").Select 最終行 = Cells(Rows.Count, 5).End(xlUp).Row 'F列の最終行を求めます。 Application.DisplayAlerts = False For 処理行 = 3 To 最終行 '3行目から最終行の前まで繰り返します。 比較行 = 処理行 + 1 '処理行の一つ下の行と比較します。→比較行とします。 確認値 = Cells(処理行, 5).MergeArea(1, 1).Value 'チェックする値を、確認値に代入します。 比較値 = Cells(比較行, 5) '比較する値を、比較値に代入します。 If 確認値 = 比較値 Then '値が同じかどうか Range(Cells(比較行, 5), Cells(処理行, 5)).MergeCells = True 結合回数 = Cells(処理行, 1) + 1 'セルを結合した回数 戻行 = 処理行 - 1 '処理行の1行上の行数を戻行とする Cells(処理行, 1) = 結合回数 '処理行のA列に結合回数を記入 Cells(比較行, 1) = 結合回数 '比較理行のA列に結合回数を記入 If Cells(処理行, 1) >= 3 Then 'もしも処理行のA列が3以上の場合 Cells(戻行, 1) = 結合回数 '戻り行のA列に結合回数をセット End If '同じでない場合は以下へ End If '同じでない場合は以下へ Next 処理行 Application.DisplayAlerts = True Application.ScreenUpdating = True Range(Cells(3, 5), Cells(最終行, 5)).Copy Range(Cells(3, 6), Cells(最終行, 6)).PasteSpecial Paste:=xlPasteFormats Range(Cells(3, 7), Cells(最終行, 7)).PasteSpecial Paste:=xlPasteFormats Range(Cells(3, 1), Cells(最終行, 1)).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False MsgBox "終了しました" End Sub

  • エクセル(セルの結合)について

    A1に名字、B1に名前が入力してあるとします。 A1とB1を結合すると、A1の名字だけになってしまいます。 結合した後「名字,(カンマ)名前」としたいのですが、できますでしょうか。 例えば、 A1「佐藤」B1「太郎」結合して、「佐藤,太郎」 間に,(カンマ)が入らなくても良いですので、A1、B1を結合した場合に両方が表示させられる方法があったら、教えて下さい。 数多く結合するものがあるので、困っています。 よろしくお願いします。

  • 結合したセルに参照式を・・・

    伝わりにくいかもしれませんが、ご容赦下さい。 sheet1にA1:A4を結合したセルを作って、そこにsheet2のA1を参照するように =sheet2!A1と式を入れます。 A5:A8の結合セルは、sheet2のA2、A9:A12の結合セルは、sheet2のA3を参照・・・ としたいので、A1:A4の結合セルを選択して、下方向にドラッグさせたのですが、A5:A8の セルの参照式が=sheet2!A5になってしまいます。 どうやらA2:A4もカウントしてしまっているように思います。 一つ一つ手入力で入れて行けば問題なくできますが、ここにこれから何百データと入れて行くので、 手入力は非常に面倒で避けたいです。 ドラッグでA5:A8はsheet2のA2、A9:A12はsheet2のA3・・・とさせる方法はないでしょうか? (要は、結合した中の最段以外の行はカウントしないように)

  • エクセルにて結合セルの範囲を参照するには?

       A B C D E F 1 |フォード| 2 |BMW | 3 |ホンダ | 各行A列~C列3つを結合入力 4 |ルノー | 5 |DFR  | 6 |ベンツ |  上記のようなエンジンメーカー表にて、A1~C1,A6~C6間にF1へエンジンを供給しているメーカー名がA~Cの3つのセルを結合して入力されているとします。  このような表を用いて別のワークシートから、このエンジンメーカーの入力セルの文字列を参照したいのですが、  フォードの場合ですと、=’エンジンメーカー表’!A1:C1と表示され、エラー値VAULEが返され、参照したい文字列が返りません。  結合されている3セルに範囲名をつけてINDIRECT関数で参照すれば出来るのですが、結合セルの項目が多過ぎて、いちいち、名前をつけていられないのです。  また、表のセル結合を崩せないのです。(同じフォーマットで作られている表が多数存在のため) このような単一セルでなく、複数のセル範囲を結合して入力されている文字列を簡単に=で参照する方法は無いでしょうか?

  • エクセル セルの結合について

    エクセルにてA列縦3行を結合してB列・C列は縦3行は結合せずにそれぞれ数値を入力してます。オートセルにてB列の数値を抽出後A列を再度抽出すると、A列は画面上では表示されているのですが、抽出が出来ません。どのようにしたらA列を抽出できるのでしょうか?ご存知の方教えてください。

  • 【Excel VBA】空白の結合セルに右上り斜線を引く

    Excel VBAは初心者です。 仕事で必要なため、アドバイスをいただけると非常に助かります。 よろしくお願いします。 【VBAで実現したいこと】  下記のようなセルで構成されている簡単な  申請書を作成しております。    結合セル1:ABCD列と4行目で結合されたセルで、氏名を入力します。  結合セル2:EFGH列と4行目で結合されたセルで、氏名を入力します。  結合セルA:ABCD列から5678行で結合されたセルです。  結合セルB:EFGH列から5678行で結合されたセルです。  ※結合セル1、2~10まで存在し、結合セルA、B~Jまで存在します。  結合セルAは結合セル1を参照し、結合セル1が空欄の場合  結合セルAに右上りの斜線を引きます。結合セル1が空欄でない場合、  何もしません。  結合セルBは結合セル2を参照し、結合セル2が空欄の場合  結合セルBに右上りの斜線を引きます。結合セル2が空欄でない場合、  何もしません。  同様な処理を、結合セルJ、結合セル10まで行います。 【教えていただきたいこと】  1.結合セルA~J、結合セル1~10全てが空欄だった場合、   空欄の結合セルは右上りの斜線を引きます。   下記のプログラムを作成しましたが、右上りの斜線が   引けません。   どのようにしたら良いでしょうか。     2.上記「VBAで実現したいこと」を行うためには、   下記のプログラムにどのような追加を行えば良いでしょうか。 【作成したプログラム】 Private Sub worksheet_change(ByVal target As Range) Dim i As Range For Each i In target If i.MergeArea.Value = "" Then i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlContinuous Else i.MergeArea.Borders(xlDiagonalUp).LineStyle = xlNone End If Next i End Sub 以上、よろしくお願いします。

  • excel2000で、結合したセルにコピーをすると・・

    シートがA、Bとあり、AのシートのA列にデータが入力されています。 このデータをBのシートのA列に写したいのですが、BのシートのA列は2行づつセルが結合されており、A1,A3、A5・・・となっているのです。 そこで、シートBのA1に「=A!A1」と入力して、これをA3,A5・・にコピーしても、「=A!A3」、「=A!A5」・・と、シートAのA2,A4・・といった偶数行が反映されないのですが、何か対処法はあるのでしょうか?

  • 【VBA】セルとシート操作の繰り返し処理

    添付画像のような、5行10列からなる1つの表を、2行間隔で作成しています。 VBAを使って、下記のような繰り返し処理をしたいと思っております。 処理1:シート(1)の表に、1行間隔でセルの塗りつぶし色を付ける。 処理2:このシート(1)をコピーして、test(1)~(6)までの6シートを作成する。     ※コピーしたシート名を「test(1)~(6)」に変更する 処理3:コピーしたtest(2)の「B2」「B11」「B20」「B29」「B38」値を「6」~「10」にナンバリングし、     同様にtest(3)~test(6)のB列の番号も「11」~「30」に変更する VBAを使って、添付画像のようなのような処理1~3の繰り返し行うことは可能でしょうか? うまく説明できず申し訳ございませんが、画像を参考にしていただければと思います。 もし可能であれば、その方法を教えてください。 お手数お掛けいたしますが、よろしくお願い致します。