Excel VBA 質問スレッド №2132 (未解決)

マクロ(VBA)を用いた演出

投稿者 : 転職者     投稿日時 : 2025/07/01(Tue) 21:20:14     OS : 未指定     EXCEL : 未指定
初めまして。
以下はサンプルです。


ExcelのA1セルに、以下の「」内の文章を記入しています。
「JAHISTC08,1CRLF
1, 和田 桃,1,19580303,,,,,,,CRLF
5,R020410,1CRLF
11,株式会社 薬局 駅前店,13,4,1234567,,,
,1CRLF
51, 工病院,13,1,1234567,1CRLF
201,1,コリオパンカプセル5mg,6,C,2,620004992,1,,,CRLF
201,1,フェロベリン配合錠,6,錠,2,620425801,1,,,CRLF
301,1,【分3 毎食後服用】,5,日分,1,1,,1CRLF
201,2,アドソルビン原末,1.5,g,2,620008284,1,,,CRLF
201,2,(局)タンナルビン「ホエイ」,1.5,g,2,612310013,1,,,CRLF
201,2,レベニン散,2,g,2,620007148,1,,,CRLF
301,2,【分3 毎食後服用】,5,日分,1,1,,1CRLF
201,3,イソジンガーグル液7%,60,ml,2,620008969,1,,,CRLF 301,3,【1日3~4回 うがい】,1,調剤,5,1,,1CRLF
201,4,ノボラピッド注 ペンフィル 300単位,2,筒,2,620008894 ,1,,,CRLF
301,4,【1日2回 朝14単位 夕6単位】,1,調剤,4,1,
,1CRLF
201,5,ペンニードル30G/8mm(ノボ),60,本,2,710010093,1,,,CRLF 301,5,,1,調剤,9,1,,1CRLF
201,6,容器,1,個,1,,1,,,CRLF
301,6,,1,調剤,10,1,,1CRLF 」

これをB1にマクロを用いて記載できるように、以下の「」内のお薬手帳イメージにするにはどうしたらいいですか?どなたか助けてください。生成AIに聞いても分かりません。

「2020/04/10 和田 桃さんのお薬
 工病院
 コリオパンカプセル5mg      6C
フェロベリン配合錠 6錠
 【分3 毎食後服用】    ✖️5日分
 アドソルビン原末        1.5g
 (局)タンナルビン「ホエイ」      1.5g
レベニン散 2g
 【分3 毎食後服用】    ✖️5日分
 イソジンガーグル液7% 60ml
【1日3~4回 うがい】 ✖️1調剤
 ノボラピッド注 ペンフィル 300単位 2筒
【1日2回 朝14単位 夕6単位】 ✖️1調剤
 ペンニードル30G/8mm(ノボ) 60本
               ✖️1調剤
 容器            1個
               ✖️1調剤
株式会社 薬局 駅前店

スポンサーリンク
[返信 1] Re : マクロ(VBA)を用いた演出
投稿者 : てらてら     投稿日時 : 2025/07/02(Wed) 06:06:41
こんにちは。

A1セルからB1セルに変換するのではなく、
最初のCSVをSheet1に転記してから、Sheet2に変換するのがExcelっぽい使い方だと思います。

[返信 2] Re : マクロ(VBA)を用いた演出
投稿者 : tek     投稿日時 : 2025/07/02(Wed) 08:16:23
質問です。
A1セルのデータ行末のCRLFは"CRLF"と言う文字ですか?それとも改行という意味ですか?

変換ルールを教えてください。
要素とはA1セルデータの各行を","でSplitしたときの何番目の配列かを表してます。

1行目 2020/04/10 和田 桃さんのお薬
 ・2020/04/10
 要素0が5の要素1のR020410から生成するのですか?
 Rを2に変えて/を日付の様に追加すれば良いのですか?
 ・和田 桃さんのお薬
 要素0が1の要素1から生成するのですか?

2行目 工病院
 要素0が51の要素1から生成するのですか?

3行目 コリオパンカプセル5mg      6C
4行目フェロベリン配合錠 6錠
 要素0が201の要素2と要素3と要素4から生成するのですか?
 要素2と要素3の間のスペース数はどのような基準ですか?
 先頭にスペースを入れる入れないの基準は何ですか?

5行目 【分3 毎食後服用】    ✖️5日分
 要素0が301の要素2と要素3と要素4から生成するのですか?

15行目               ✖️1調剤
 A1セルデータに改行が無い場合もあるのですか?
 最初の質問に戻りますが、"CRLF"を改行と考えれば良いのですか?

[返信 3] Re : マクロ(VBA)を用いた演出
投稿者 : さんこう     投稿日時 : 2025/07/02(Wed) 08:18:52
>これをB1にマクロを用いて記載

改行で分割した各行の文字列について「,」で分割してから、必要なところを結合したらよろしいかと思います。

雑なサンプルです。参考になれば。

Sub Test()
    s = Range("A1")
    v1 = Split(s, vbLf)
    
    s1 = Split(v1(1), ",")(1) & "様" & vbLf
    For i = 6 To UBound(v1)
        v2 = Split(v1(i), ",")
        s1 = s1 & v2(2) & " --- " & v2(3) & v2(4)
        s1 = s1 & vbLf
    
        '参考として
        For j = 0 To UBound(v2)
            Cells(i + 2, j + 3) = v2(j)
        Next
    Next
    s1 = s1 & Split(v1(3), ",")(1)
    Range("B1") = s1
End Sub

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-04 14:11:25 )
タイトルとURLをコピーしました