アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のようなセルが沢山あります。
※[改行]とは改行が入っているという意味です。

-------------------セルの中身はここから
[改行]
[改行]
[改行]
(1)みかん[改行]
(2)こたつ[改行]
(3)おもち[改行]
[改行]
[改行]
-------------------セルの中身はここまで。

このとき、文章が入っていないところの[改行]、および、最終行の[改行]だけを自動で削除して、
-------------------セルの中身はここから
(1)みかん[改行]
(2)こたつ[改行]
(3)おもち
-------------------セルの中身はここまで。
このように整形するためにはどういうVBAもしくはマクロを作ったらよいでしょうか?

A 回答 (5件)

とりあえずA列について。



たとえば。
sub macro1()
 dim h as range
 dim res as string

 for each h in range("A1:A" & range("A65536").end(xlup).row)
 with application
 res = .substitute(h.value, vblf, " ")
 res = .trim(res)
 h = .substitute(res, " ", vblf)
 end with
 next
end sub

たとえば。
sub macro2()
 dim h as range
 dim a, x
 dim res as string

 for each h in range("A1:A" & range("A65536").end(xlup).row)
 a = split(h, vblf)
 res = ""
 for each x in a
  if x <> "" then
   res = res & vblf & x
  end if
 next
 h = mid(res, 2, 999)
 next
end sub
    • good
    • 0
この回答へのお礼

一つ目に挙げて頂いた例を加工したところ、非常に簡単な方法で目的を実現することができました。
このプログラムの意味をいま辞書を引きながら学んでいるところです。
このたびはありがとうございました。

お礼日時:2013/04/07 16:42

 TRIM関数だけでは改行を削除する事は出来ませんし、CLEAN関数では全ての[改行]


が削除されるため、

(1)みかん(2)こたつ(3)おもち

となってしまい、

(1)みかん[改行]
(2)こたつ[改行]
(3)おもち

にはなりません。

 ですから、ワークシート関数で行う場合には、次の様な関数となります。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," ",CHAR(30))," ",CHAR(31)),CHAR(10)," "))," ",CHAR(10)),CHAR(30)," "),CHAR(31)," ")
    • good
    • 0
この回答へのお礼

関数を使うと非常に複雑なことができるのですね、とてもよい刺激になりました。
ありがとうございました。

お礼日時:2013/04/07 16:40

A1に入ってるなら


=CLEAN(A1)
セルの書式設定 配置タブ 折り返して全体を表示する
これではだめですかね
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
私はまだVBAをほとんど知らないのでCLEANを検索するきっかけになりました。

お礼日時:2013/04/07 16:39

回答No1です。


シート2のA1セルには次の式を入力して配置のタブで折り返して全体を表示するでもよいでしょう。

=IF(Sheet1!A1="","",TRIM(Sheet1!A1))
    • good
    • 0
この回答へのお礼

重ねてご回答いただきましてありがとうございます。
勉強になりました。

お礼日時:2013/04/07 16:37

例えばシート1のA1セルから下方にそのようなデータが幾つも入力されているとします。


そこでシート2のA1セルには次の式を入力して下方にドラッグコピーします。

=IF(Sheet1!A1="","",MID(Sheet1!A1,FIND("(",Sheet1!A1),LEN(Sheet1!A1)-FIND("(",Sheet1!A1)))

A列を選択して「セルの書式設定」から「配置」のタブで「折り返して全体を表示する」にチェックをします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!