excelvba 文字列の変更
未読分:4件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#4 2015年2月5日(木)14時06分 From: クロワッサン | 返事 削除 変更 |
VBAの中では改行は「vbLf」で扱えます。 置換で"、"&vbLfを”、”に置換などしていく手もありますが、改行のみの行の扱いが厄介ですね。 セルの中で"、"&vbLfなどを”、■”などに一旦置換し、残ったvbLfを”、”に置き換えてから最後に"■"をvbLfに戻す、という手もあるかな。 とりあえずアクティブセルに対して働くマクロで、ベタに組んでみました。 セルの内容は文字列でしょうから、instrでvbLfの位置を検索し、それのひとつ前の文字で判定してvbLfを""に置換ています。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 Sub Macro1() ' With ActiveCell cnt = 0 Do n = InStr(n + 1, ActiveCell, vbLf) If n = 0 Then Exit Do Else If Mid(ActiveCell, n - 1, 1) = "、" Then ActiveCell.Characters(n, 1).Text = "" Else: If Mid(ActiveCell, n - 1, 1) = "、" Then ActiveCell.Characters(n, 1).Text = "" Else: If Mid(ActiveCell, n - 1, 1) = "。" Then ActiveCell.Characters(n, 1).Text = "" Else: If Mid(ActiveCell, n - 1, 1) = "。" Then ActiveCell.Characters(n, 1).Text = "" Else: If Mid(ActiveCell, n - 1, 1) = "." Then ActiveCell.Characters(n, 1).Text = "" Else: If Mid(ActiveCell, n - 1, 1) = "," Then ActiveCell.Characters(n, 1).Text = "" Else: ActiveCell.Characters(n, 1).Text = "、" End If End If End If End If End If End If cnt = cnt + 1 End If Loop End With End Sub |
Message#3 2015年2月5日(木)11時45分 From: sabasa | 返事 削除 変更 |
早速のご教授、誠にありがとうございます。 説明が不足しており、申し訳ございません。 データは1つのセルに入っており、入っている文字の 例えば「あああ」は3文字であったり、10文字であったりと文字数は特定できません。 要は質問にある通り、句読点等+改行があった場合は、 改行を削除したい。 句読点が無く改行だけの場合は、次の行との文字が詰まる関係で 読解ができなくなるのを防ぐために、 改行の部分を「、」に置き換えたいという事です。 |
Message#2 2015年2月5日(木)11時44分 From: cybo | 返事 削除 変更 |
こんな感じですか? ■VBAコード Sub sumple() Dim myRng As Range Dim myStr As String Dim i As Long For Each myRng In Range("A2:A7") myStr = myRng.Value i = 1 Do i = InStr(i, myStr, Chr(10)) If i = 0 Then Exit Do Select Case Mid(myStr, i - 1, 1) Case "、", "。", ",", "." myStr = Left(myStr, i - 1) & Right(myStr, Len(myStr) - i) Case Else myStr = Left(myStr, i - 1) & "、" & Right(myStr, Len(myStr) - i) i = i + 1 End Select myRng.Offset(0, 1).Value = myStr Loop Next myRng End Sub |
Message#1 2015年2月5日(木)11時00分 From: sabasa | 返事 削除 変更 |
Excel2010 VBAについて、ご教授をお願い致します。 1つのセルに入力されている文字列の変更について以下の様に変更したいのですが、簡単にできる方法はございますか? (色々と試しましたが、うまくいきません。) 既内容 → 変更後内容 ・「、」(読点)+改行(読点は半角を含む) → 読点だけにする(改行を削除) ・「。」(句点)+改行(句点は半角を含む) → 句点だけにする(改行を削除) ・「,」 (半角のカンマ)+改行 → 半角のカンマだけにする(改行を削除) ・「.」 (半角のピリオド)+改行 → 半角のピリオドだけにする(改行を削除) ・改行(のみ) → 読点(、)にする。 以下にサンプルを記述します。 ☆元データ あああ、(改行) おおお(改行) いいい。(改行) ううう,(改行) えええ.(改行) ☆求める結果の内容(「おおお」の次の文字「、」は改行を置換え) あああ、おおお、いいい。ううう,えええ. よろしくお願いいたします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降