[[20150417225124]] 『2行にある文字を1行にまとめたい』(KK) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『2行にある文字を1行にまとめたい』(KK)

簡単な操作かもしれませんが、ネットで随分調べてもわかりません。

A1セル あいう
A2セル かきく
A3セル さしす

とはいっている文字を
A1セルに あいうかきくさしす
とまとめたいのです。例えばBセルにまるめるのであれば
=A1&A2&A3 か関数でできますし、参考例もたくさんあります。

でも今文字がはいっているA1セルにまとめる説明が見つかりません。
どうぞよろしくご教授ください。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 作業用セルを使わないのであればマクロになります。
 サンプルです。

 Sub test()
  Dim kitenrng As Range
  Dim mystr As String
   Set kitenrng = ActiveSheet.Range("A1")
   mystr = Join(WorksheetFunction.Transpose(kitenrng.Resize(3).Value), vbLf)
   kitenrng.Resize(3).Clear
   kitenrng.Value = mystr
   Set kitenrng = Nothing
 End Sub
(カリーニン) 2015/04/17(金) 23:19

 >例えばBセルにまるめるのであれば 
 >=A1&A2&A3 か関数でできますし、参考例もたくさんあります。 

 B1セルに式で出して、それを元のセルに値で貼り付け、としたら
 わざわざマクロを組むまでもありません。
(カリーニン) 2015/04/17(金) 23:21

カリーニン様

早速のご教授ありがとうございました。
明日までに400ほど作業でまとめなくてはならず困窮していました。
マクロは始めたばかりですが、そのままコピーさせていただいて実行
したらうまくいきました。

>B1セルに式で出して、それを元のセルに値で貼り付け
は(Bセルではありませんが)自分でマクロにしたのですが、うまく
行きませんでした。この作業が終わったらもう一度試してみます。
本当にありがとうございました。
(KK) 2015/04/17(金) 23:33


 >Set kitenrng = ActiveSheet.Range("A1")

 このコードはA1セルが基点となってますが、

 Set kitenrng = ActiveCell

 としたらアクティブセルが基点となります。

 また、ループ処理で行うともっと効率化できます。
(カリーニン) 2015/04/17(金) 23:41

 たとえば、Ctrlキーを押しながら基点セルをクリックしていって選択した後
 で一括で行うなら↓のような感じになります。

 ※最初は絶対にサンプルデータで行うか、バックアップを取った後実行してみてください。

 Sub test2()
  Dim c As Range
  Dim kitenrng As Range
  Dim mystr As String
   For Each c In Selection
    Set kitenrng = c
    mystr = Join(WorksheetFunction.Transpose(kitenrng.Resize(3).Value), vbLf)
    kitenrng.Resize(3).Clear
    kitenrng.Value = mystr
    Set kitenrng = Nothing
   Next c
 End Sub
(カリーニン) 2015/04/17(金) 23:48

カリーニン様

引き続きのご教授ありがとうございます。
昨日はおかげさまでなんとか作業がこなせました。
最初お教えいただいたマクロが実行できたので、

Set kitenrng = ActiveSheet.Range("A1")を
Set kitenrng = ActiveCell

になおして(これはなんとか理解してました)実行。
ただ改行でスペースが入るので、それは

Dim rngTarget As Range
On Error Resume Next
Set rngTarget = Application.InputBox( _

   "範囲を選択してください", Type:=8)
On Error GoTo 0
If rngTarget Is Nothing Then Exit Sub
rngTarget.Replace vbLf, "", xlPart

のマクロを使いました。悲しいかなまだ初心者ゆえ
行をつなげる+改行削除をつなげることはできず
それでも何百もカット&ペーストすること思えば
格段の速さです。
ネットとはいえ、見ず知らずの方にご丁寧にご指導
いただけたこと感謝もうしあげます。

大量の処理があるときは、マクロはとても重宝します。
自由にマクロ使いこなせる方が本当にうらやましいです。
週末はお教えいただいたループや一括処理をためして
マイマクロにストックします。
重ねてお礼申し上げます。ありがとうございました。
(KK) 2015/04/18(土) 17:14


 >mystr = Join(WorksheetFunction.Transpose(kitenrng.Resize(3).Value), vbLf)

 VbLf
 がセル内改行になります。

 mystr = Join(WorksheetFunction.Transpose(kitenrng.Resize(3).Value), "")

 とすれば改行なしで連結します。
(カリーニン) 2015/04/18(土) 20:53

カリーニン様

度々のご教授ありがとうございます。
VbLf と "" がわかってないなど情けなくなります。

一括マクロはあてはめて作ってみました。上手く動作しました! うれし。

私の作業全体としては、集計ソフトを加工(ここで行をまとめる操作が出ました)
単純集計とクロス集計を作成、さらに円グラフ化するというものです。
一括やループは必須です。

マクロは個々人の作業内容で果てしなくあると思います。
大変ですが、時にはご助力もいただき、これからも少しづつ上達できるようがんばります。
ありがとうございました。
(KK) 2015/04/19(日) 20:55


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.