エクセルのマクロで教えてください。

行数が500行程度あって、各行に、ある列が2分割されているデータがあります。
(全ての列ではないです)
分割を解除して、1行で情報表示をさせたいのですが、手作業でやると膨大なのでマクロでできないかと思っています。
作り方を教えていただけないでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:nitscape No.1

回答回数526ベストアンサー獲得回数0

ポイント15pt

セルの結合を解除したい、ということでしょうか?そうでしたら...


Sub Macro1()

For i = 1 To 500

Cells(i, 5).MergeCells = False

Next

End Sub


という感じです(おそらく違いますよね?)。


2列を結合という意味でしたら下のようになります。

Sub Macro2()

For i = 1 To 500

Cells(i, 5) = Cells(i, 5) & Cells(i, 6)

Cells(i, 6) = ””

Next

End Sub


for i=1 to 500の部分が行の指定です。2行目から30行目まででしたらfor i=2 to 30のようにします。

Cells(i,5)の5の部分が列の指定です。A列が1、B列が2のようになります。ここでは5列目を指定しています。

id:Dojintan No.2

回答回数2ベストアンサー獲得回数0

ポイント15pt

URLはダミーです。

マクロでなくてはだめでしょうか?

該当データをエディタにコピーします。隣り合ったセル(列)はTABで、行は改行で区切られると思いますので、エディタの置換機能でTABをまとめて削除して、EXCELにコピーし戻したら目的を達成できませんか?

id:solunaris149 No.3

回答回数102ベストアンサー獲得回数4

ポイント15pt

http://www.hatena.ne.jp/1128351274#

人力検索はてな - エクセルのマクロで教えてください。 行数が500行程度あって、各行に、ある列が2分割されているデータがあります。 (全ての列ではないです) 分割を解除して、1行で..

中身によりますが、値だけならcsv形式で書出後、テキストエディタ等で区切り部分を一括置換して保存し、再度エクセルで開いてはどうでしょう?

マクロは必要ないと思います。

id:ootatmt No.4

回答回数1307ベストアンサー獲得回数65

ポイント15pt

二つのセルの内容を一つのセルに入れるだけなら、マクロを使わずに関数で。


=A1&B1


とすればどうですか?

id:yoo15x No.5

回答回数150ベストアンサー獲得回数1

ポイント15pt

http://f.hatena.ne.jp/yoo15x/20051004034723

Pictlife - http://www.hatena.ne.jp/1128351274

> ある列が2分割されているデータがあります。

> 全ての列ではないです

この2点から例を考えてみました。


この例では住所が2行に渡ってしまっているデータがあります。

このような場合の住所をひとつのセルにまとめるということでしょうか。


マクロの使用よりも、楽に解決するほうを優先する回答です。

画像のワークシートの例で説明します。


(1) D2 のセルに次の数式を直接入力で入れます(「”」が変換表示されていますので注意)。

  =IF(A3=””,C2&C3,IF(A2=””,””,C2))


  この定義で計算する式です。

  ・データの初めには必ず“名前”が入っている

  ・“名前”が入っていない行の“住所”は上の行の“住所”の後半である

  

  次の行の“名前”が空欄なら、今の行の“住所”に次の行の“住所”を連結して表示。

  次の行の“名前”が空欄でなく、今の行の“名前”が空欄なら何も表示しない。

  次の行の“名前”が空欄でなく、今の行の“名前”が空欄でなければ今の行の“住所”を表示。


(2) D列の最後 (図の例では D7) へ移動し、[Ctrl] + [Shift] + [ ↑ ] で

  一気に (1) で式を入力したセルまでを選択します。

  編集 → フィル → 下方向にコピー で D列の全行に式がコピーされ、

  連結された住所が表示されていますので、そのままコピーし、

  本来の“住所”の最初のセルである C2 を右クリックして、

  形式を選択して貼り付けを選びます。

  ダイアログで「値」を選んで OK すると、D列に表示されている値が“住所”に入ります。


(3) A列や C列をキーにして全体を並べ替えすると空の行がまとまりますので

  それらを削除、D列 も削除して完成になります。

id:Harlock No.6

回答回数82ベストアンサー獲得回数3

ポイント15pt

http://www.city.omihachiman.shiga.jp/kikakuzaisei/MMC/qa/2003/ex...

セル内で、折り返し(2行以上)で表示させたい

みなさんは「セルの統合」を教えていますが、もしかして、taichi1500さんの悩みは「分割を解除して、1行で」という表現から、「セルの折り返し表示」もしくは「セル内改行」の解除をしたいのではないでしょうか?

URLはセルの列幅で折り返し表示する手順を示していますが、このレベルであれば、当然この逆の操作で解決します。

ただし、Alt+Entを入力することで発生する折り返し(セル内改行)はこれでは解決しません。

(多分、この状態のことを言っているのではないでしょうか?)


確かに文字列の置換えとかでは Alt+Ent を指定することができずうまくいかないですね。


マクロではなく関数ですが、以下の関数で解決できそうです。

1) 該当列の右隣に1列挿入。

2) 挿入列にて下記の関数を使用。

  =CLEAN(該当セル)

3) 500行分コピー

4) 挿入列を範囲指定し、コピー

5) 該当列で形式指定の値コピー

6) 挿入列を削除


これでセル内改行が無くなります。


上記解説を書いた後で、同じ内容を説明したURLを発見しました。

CLEAN関数は元々「文字列から印刷出来ない文字を削除して返す」という関数です。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません