ある汎用のシステムから出力されるテキスト(文章)をCSV形式のデータをEXCELデータに変換しています。そのEXCELに変換されたデータは、文章です。
1点問題があります。そのセル内の文章は、ある特定の記号を改行の代わりとして、連続したテキスト文章になっているため、非常に読み辛いものになっていますいます。その改行を意味する特定記号は、複数個存在し、セル内の個数は一定ではありません。
そのため、読み辛さを解消するためい、その特定記号をセル内での改行に置換させる、マクロまたはVBAでの一括処理することが出来ないでしょうか。置換処置後は、特定記号は不要です。
なお、(1)改行を意味する特定記号は、「~|」です。~と|の組み合わせで、それはそれぞれ半角表記されています。(2)1ファイルにおける対象レコード(行)は、約3,000~10,000行あり、手作業での処理は不可能です。
宜しくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
回答番号ANo.2です。
>私個人では、マクロを走らせるスキルがないので、
それでは、多少の手間は掛かりますが、次の様な方法は如何でしょうか。
まず、置換専用のBookを作成し、その中に「元データ貼付け」という名前のシートと、「置換後」という名前のシートを作成して下さい。
そして、置換後シートのA1セルに次の数式を入力して下さい。
=SUBSTITUTE(INDIRECT("元データ貼付け!R"&ROW()&"C"&COLUMN(),FALSE)&"","~|",CHAR(10))
次に、置換後シートのA1セルをコピーして、CSV形式データの貼り付け先を全てカバーするのに充分なセル範囲に、貼り付けて下さい。
ここまでが準備段階となります。
そして、CSV形式のデータをEXCELデータに変換する際には、まず、置換専用Bookの元データ貼付けシートにデータを貼り付けて下さい。
すると、置換後シートに、元の文字列データの「~|」の部分を、Excelのセル内での改行を意味するコード番号10の文字(?)に置換した文字列が表示されます。
そこで、置換専用Bookを開いたままの状態で、変換したデータを最終的に保存する、貼付け先のBookを開き、
置換専用Bookの置換後シート中で、データが表示されているセル範囲をコピーしてから、Excelの「形式を選択して貼り付け」機能を使用して「値」のみを、貼付け先のBook中の貼付け先となるセル範囲に貼り付けて下さい。
尚、上記の数式は(一般的な関数とは異なり)参照元のセルが削除されてもエラーとはなりませんから、置換専用Bookを使って、新たに別のCSV形式データを変換するために、元データ貼付けシートに貼り付けられている古いデータを消去する場合には、セル範囲や、行単位、列単位で、セルごと削除しても、エラーとなったり、セルやデータの並び方がおかしくなったりする心配はありません。
繰り返し、ご支援頂き大変ありがたく感じております。
早速明日ためしてみたいと思います。
大幅に難易度が下がったので、私にも操作出来そうな気がします。
時間の関係で、週明けの結果報告になることも想定されます。
ご容赦願います。
No.2
- 回答日時:
「置換」では「~」が変換されない様です。
以下は、CSV形式から変換された文字列データが、Sheet1のA1~G10000の範囲内にのみ存在していて、且つ、Sheet1のコピーシートであるSheet1(2)等が存在していない場合のマクロです。
シート名やセル範囲が異なっている場合には、適時修正して下さい。
それから、このマクロを動作させると、処理のために作成したSheet1(2)シートを削除しても構わないかどうかを尋ねるダイアログボックスが、最後に現れますので、[削除]ボタンをクリックして下さい。
Sub Macro1()
'
' Macro1 Macro
'
'
Sheets("Sheet1").Select
Sheets("Sheet1").Copy Before:=Sheets(1)
Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUBSTITUTE(Sheet1!RC,""~|"",CHAR(10))"
Range("A1").Select
Selection.Copy
Application.Goto Reference:="R1C1:R10000C7"
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Application.Goto Reference:="R1C1"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Sheets("Sheet1 (2)").Select
ActiveWindow.SelectedSheets.Delete
End Sub
回答ありがとうございます。私個人では、マクロを走らせるスキルがないので、周囲の有識者にアドバイスを受けて、できるだけ早くに試してみたいと思います。
No.1
- 回答日時:
>置換処置後は、特定記号は不要です。
…「置換」すりゃ良いじゃない。
検索文字列にその特定文字
置換後の文字列に改行コード(Ctrlキーを押しながらJキーを押す)
でOK。
改行コードは表示されませんが、ちゃんと入力されていますので安心してください。
(てか、他の置換をするときに消し忘れる方が怖いくらいw)
ちなみにこうすると、セルの高さが足りないと開業され続けた文字列は表示されなくなります。
(行の高さには上限がある)
■そして本題(今までのは前置きです)
…ですので、「区切り位置」 で複数の列に分解することをお薦めします。
区切り文字として、その特定文字を指定すれがいいです。
横方向に記入されているセルが増えるので注意してください。
必要なら、処理後に行をコピーして「形式を指定して貼り付け」から
「縦と横を入れ替えて貼り付け」る選択で貼り付け直すといいでしょう。
これなら1つのセルの高さが全て等しくなりますから見た目もすっきりします。
回答ありがとうございます。検索文字列にその特定文字置換後の文字列に改行コード(Ctrlキーを押しながらJキーを押す)は、存じませんでした。早速試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Excelの条件付き書式についての質問です。 2 2022/09/08 01:25
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) EXCELでリターンキーが押されたらそのセルに特定の文字を表示したいのですが。 2 2022/08/07 12:58
- Excel(エクセル) excelで可視セルのみ置換 3 2022/08/04 11:02
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル関数で {=TABLE(,セル...
-
エクセルの行高さが、挿入作業...
-
Excelのオートカルクの結果をコ...
-
VBA 条件が一致した場合の...
-
プルダウンで選択すると隣のセ...
-
Excel2010の並べ替えで行の高さ...
-
エクセルで作った書類に、パン...
-
エクセルで一番下の日付や時刻...
-
EXCELで変更していないのに『変...
-
エクセルで複数の勤務時間ごと...
-
事務所の図面をパソコンで 簡単...
-
リース初心者です 利子率の計...
-
エクセルで離れたセルを離れた...
-
エクセルでの残業時間の計算(...
-
至急! Excelで歩合計算
-
エクセルで有給休暇の取得日数...
-
エクセルで行ごとに繰り返しの...
-
Caps Lockキーの解除
-
shiftキーのロック解除をしたい...
-
Excelでカーソルが逆に動く
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2010の並べ替えで行の高さ...
-
リース初心者です 利子率の計...
-
エクセル関数で {=TABLE(,セル...
-
プルダウンで選択すると隣のセ...
-
エクセルで離れたセルを離れた...
-
エクセルで複数の勤務時間ごと...
-
エクセルで作った書類に、パン...
-
60進法で複数セルの足し算、引...
-
VBA 条件が一致した場合の...
-
エクセルデータをワードへ反映...
-
EXCELでR1C1参照形式の絶対参照...
-
エクセルの行高さが、挿入作業...
-
Excelハイパーリンクのアドレス...
-
エクセルを使った分配比率の求...
-
今日の日付が第n曜日かを求める
-
エクセルで一番下の日付や時刻...
-
Excelのオートカルクの結果をコ...
-
Excelの空白行を上に詰めるVBA...
-
至急! Excelで歩合計算
-
エクセルデータを拡大/縮小して...
おすすめ情報