- ベストアンサー
エクセル2007 同一データが連続したセルの結合について
はじめて投稿させていただきます。 うまく説明できるかどうか判りませんが、よろしくお願いします。 エクセル2007 で以下のような結果を得られるようなマクロを作りたいと考えています。 横方向にA列~C列の3つの連続したセル内容が同一で縦方向に2つ以上連続した場合のみ、それらの行を結合させたいのです。具体的には下図のような感じです。 何かよい方法があればアドバイスいただきたいと思います。どうかよろしくお願いします。 A列 B列 C列 D列 機種 区分 ユーザー名 納品数 ABC あああ 田中商店 10 ABC あああ 田中商店 20 ABC あああ 田中商店 30 XYZ いいい 田中商店 25 XYZ ううう 山田商事 40 ↓ ↓ ↓ ↓ ↓ A列 B列 C列 D列 機種 区分 ユーザー名 納品数 10 ABC あああ 田中商店 20 30 XYZ いいい 田中商店 25 XYZ ううう 山田商事 40
- その他MS Office製品
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
エクセルは表計算ソフトです。見た目よりも機能がよく働くように維持することが必要でしょう。その点でセルの結合はそのあとの計算処理を複雑にします。できればセルの結合はしないことですね。 どうしてもということであれば次のようなマクロはどうでしょう。 結合のときに注意が表示されますがOKすればよいでしょう。 Sub セルの結合() Dim i As Integer Dim n As Integer Application.ScreenUpdating = False i = 0 Do i = i + 1 If Range("A" & i) & Range("B" & i) & Range("C" & i) = Range("A" & i + 1) & Range("B" & i + 1) & Range("C" & i + 1) Then n = 0 Do n = n + 1 Loop Until Range("A" & i) & Range("B" & i) & Range("C" & i) <> Range("A" & i + n) & Range("B" & i + n) & Range("C" & i + n) Range(Range("A" & i), Range("A" & n - 1 + i)).MergeCells = True Range(Range("B" & i), Range("B" & n - 1 + i)).MergeCells = True Range(Range("C" & i), Range("C" & n - 1 + i)).MergeCells = True i = n - 1 + i End If Loop While i < Range("a65536").End(xlUp).Row Application.ScreenUpdating = True End Sub
その他の回答 (3)
- takana_
- ベストアンサー率44% (21/47)
#3です 仮にセルE2でも =CONCATENATE($A1,$B1,$C1) と入力してみてください なんとなく関数の意味はわかると思います。 条件式の意味は =CONCATENATE($A1,$B1,$C1) と =CONCATENATE($A2,$B2,$C2) の 返す答えが等しければ(Trueであれば)、設定した書式を適用しろということです。 仮に適当なセルに、=1=1 分かりやすく書けば=(1=1)と入力すればTRUEとなるはずです。1と1は等しいということです。
お礼
いろいろありがとうございます。 これから色々勉強していきたいと思います。
- takana_
- ベストアンサー率44% (21/47)
望まれているやり方とは少し違いますが、 このような方法はどうでしょうか? A2セルを選択して 条件付き書式を選択して 「ルールの種類」で、「数式を使用して書式設定する」を選択 「ルールの内容に」以下の数式を記述 =CONCATENATE($A1,$B1,$C1)=CONCATENATE($A2,$B2,$C2) 「書式の選択」で「フォントの色」に白色を選択 A2セルをコピーして、A2:C6セルに「形式を選択して貼り付け」 において「書式」を貼り付ける。 以上で、見た目はフォントが白色なので見えなくなります。
お礼
ありがとうございます。 こんな方法もあったのですね!勉強になります。 これだとセルの結合をしなくても済むんですね。 ただこれは何を意味するんでしょうか? > =CONCATENATE($A1,$B1,$C1)=CONCATENATE($A2,$B2,$C2)
- yucco_chan
- ベストアンサー率48% (828/1705)
>その数と同じ回数だけ警告画面があらわれます #1さんのソースを流用して、以下のように Application.DisplayAlerts = False を付け加えれば、警告メッセージが出ません。 #1さんが言われるように、私もセルの結合は推奨しませんが。。 Sub セルの結合() Dim i As Integer Dim n As Integer Application.ScreenUpdating = False Application.DisplayAlerts = False i = 0 Do i = i + 1 If Range("A" & i) & Range("B" & i) & Range("C" & i) = Range("A" & i + 1) & Range("B" & i + 1) & Range("C" & i + 1) Then n = 0 Do n = n + 1 Loop Until Range("A" & i) & Range("B" & i) & Range("C" & i) <> Range("A" & i + n) & Range("B" & i + n) & Range("C" & i + n) Range(Range("A" & i), Range("A" & n - 1 + i)).MergeCells = True Range(Range("B" & i), Range("B" & n - 1 + i)).MergeCells = True Range(Range("C" & i), Range("C" & n - 1 + i)).MergeCells = True i = n - 1 + i End If Loop While i < Range("a65536").End(xlUp).Row Application.ScreenUpdating = True End Sub
お礼
ありがとうございました。 おかげさまで、警告画面がスキップされ、思うような結果が得られました。 私の場合、仕事上、97列、約600行のcsvファイルをダウンロードして、そこから不要な列を削除、社員に視覚的にわかりやすくして配布する必要があったので、重複内容のセル結合にこだわったのです。後々、表計算に利用する必要も無かったものですから。 このたびは本当にお世話になり、ありがとうございました。
関連するQ&A
- エクセル 文字にリンクを入れる方法
エクセルでの質問です。 たとえばA:1に 山田商店 A:2に田中商店と入力 次にB:1に山田商店のURLを入力 B:2に田中商店のURLを入力 これをC:1には 山田商店という文字にB:1で入力したURLを リンクさせるやり方はあるでしょうか? 私の稚拙な文章だと質問がわかりにくいかも知れませんが、 ようは、A列に商店名 B列にその商店のURL C列に商店名にURLの リンクを張ったものを入れたいのです。 ご存知の方がいましたら、よろしくお願いいたしますm(__)m
- ベストアンサー
- オフィス系ソフト
- セルの一部のフォントの置き換え可能ですか?エクセル2000
A列に店名がならんでいます。 1鈴木商店 2山田商店 3田中呉服店 4山口飲食店 ・ ・ ・ たとえば、 これの一文字の「店」のフォントだけを他のフォントに 一括で置き換えできませんか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ExcelでA列内で重複するレコードを削除
A、B、C列にデータが入力されており、A列の店名が重複する場合、最初の1つを残して、他の重複するレコード(行全体)を削除する方法を教えてください。 A列で重複していても、B、C列で内容が違う可能性があります。 例えば、 A列:田中商店 B列:本町1-1-1 C列:0120-000-000 A列:田中商店 B列:本町1-1-11 C列:0120-000-001 この様にA列で田中商店が重複する場合、1番目の田中商店の行だけを残し、2番目以降は行全体を削除して上方向に詰めたいです。
- ベストアンサー
- Excel(エクセル)
- エクセルのセルの結合について
数式や関数を使わずに、2つのセルの文字列を結合 する方法はあるのですか? -----------例----------- A1のセルの文字列 山田 B1のセルの文字列 太郎 C1に山田太郎と表示させる ------------------------ 知り合いが何かの本で見たと言っています。 もしかしたら見間違いでしょうか? 非常に気になってモヤモヤしています。 返答宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル:異なるセルの文字の結合
例えばA列に「性」B列に「名」とか、A列に「市町村名」B列に番地(3-2-3など)とあった場合、一つのセルに2つのセル内の文字をまとめることは出来ますか? 例:A1「山田」B1「太郎」→C1「山田太郎」 確か出来たはずなのですがどうやったら良いのか忘れてしまいました^^;
- ベストアンサー
- オフィス系ソフト
- ハイパーリンク情報を別セルへコピー
************************************************************* <例>・・・A列にはハイパーリンクされているセルとされていないセルが混在です A列(社名) B列(郵便番号) C列(住所) D列(電話番号) (株)ABC商事 100-1234 東京都港区… 03-1234-5678 XYZ運送(有) 200-6789 東京都港区… 03-8765-4321 (株)あいう物産 100-1234 東京都港区… 03-9999-0001 ↓VBA実行↓ A列(社名) B列(郵便番号) C列(住所) D列(電話番号) E列 (株)ABC商事 100-1234 東京都港区… 03-1234-5678 http://www.abc.co.jp XYZ運送(有) 200-6789 東京都港区… 03-8765-4321 (株)あいう物産 100-1234 東京都港区… 03-9999-0001 http://www.aiu.ne.jp ************************************************************* 上記のようなデータがExcel上に有ります。 A列にはハイパーリンクされているセルとされていないセルが混在していますが、この、情報を別の列に一括でコピー出来ないでしょうか? 現在は、1つずつ、A列のURLをE列にコピペしています。 非常に手間が掛かり困っています。 よろしくお願い致します。
- 締切済み
- その他(業務ソフトウェア)
- エクセルで連続したセルの行番号を取得するには?
教えてください。 a列に販売店(複数あり)名が入っています。 何行目まで入っているかは不定です。 例えば今日はa2からa100までがa商店、a101からa150までがb商店、a151からa200までがc商店、 明日はa2からa50までがa商店、a51からa130までがb商店、a131からa300までがc商店という具合です。 そこで、a商店は何行目から何行目までか、b商店、c商店は??というのを取得する関数を知りたいです。 excell2003です。 どうぞよろしくお願いします。
- ベストアンサー
- その他MS Office製品
- エクセルのデータ並べ替え(抽出)の方法
エクセルのデータ並べ替え(抽出)の方法 を教えてください。 下記のようなデータがあるとします。 A B C D 1 田中 東京 千葉 福岡 2 山田 京都 滋賀 3 佐藤 奈良 青森 USA 4 鈴木 カナダ 愛媛 A列は名前、B列以降は文字列です。B列以降はC列までの行、D列までの行とさまざまです。重複セルはありません。 これを下記のように並べ替えたいです。 A B C D 1東京 田中 2千葉 田中 3福岡 田中 4京都 山田 5滋賀 山田 6奈良 佐藤 7青森 佐藤 8USA 佐藤 9カナダ 鈴木 10愛媛 鈴木 こういうことは可能でしょうか??? 教えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロでセルに入力されているセル番地に貼り付け?
エクセルのマクロで質問です。 下記のように入力されています A B C D 1 あ 田中 2000 N3 2 い 中嶋 1500 Q3 3 う 吉田 1600 U3 4 え 石川 1800 N11 5 お 横山 1500 Q11 6 か 鈴木 1600 U11 7 き 中村 2500 N19 8 く 山田 1200 Q19 9 け 橋本 1400 U19 ・・・・(500行くらいあります) この表のA1:C1をN3に行列を入換えて貼り付け、 A2:C2をQ3に行列を入換えて貼り付け・・・ のように、ABC列の内容を、D列に入力されているセル番地に貼り付けたいのです。 INDIRECT関数など使ってみましたが、どうにも出来そうにありません。 これをなんとかマクロで出来ないものでしょうか。 困ってます。お願いします。
- ベストアンサー
- オフィス系ソフト
お礼
早々に回答いただきありがとうございます。 おっしゃるように、マクロを実行すると、「選択範囲には複数のデータがあります。1つのセルとして結合すると・・・」と警告画面が表示され、「OK」ボタンを押すことによりセルは結合され、思ったような表示になります。しかし、シート中にセルの結合されるべき部分が数百個所あるため、その数と同じ回数だけ警告画面があらわれます。 ただ単にデータが入ったセル複数を選んで「セルを選んで中央揃え」ボタンを押しても同様の警告が出るので、当然といえば当然なのでしょうが・・。やはり、私のやろうとしていることには無理があるのでしょうか?