テキスト形式の罫線要素を用いた表をEXCELに貼り付けるマクロ
クイズで学ぼう!『エクセル』の小技のメルマガ活用
ふとした切っ掛けで、クイズで学ぼう!『エクセル』の小技というメルマガを知りまして、今、勉強中です。練習問題として、以下のような、メールマガジンでも配信できる形式の表の表現が書かれています。
┏━┳━━━━┯━━━━┯━━━━┯━━━━┓
┃ ┃A │B │C │D ┃
┣━╋━━━━┿━━━━┿━━━━┿━━━━┫
┃1┃ │晴れ │曇り │雨 ┃
┠─╂────┼────┼────┼────┨
┃2┃晴れのち│=$A2&B$1│=$A2&C$1│=$A2&D$1┃
┠─╂────┼────┼────┼────┨
┃3┃曇りのち│=$A3&B$1│=$A3&C$1│=$A3&D$1┃
┠─╂────┼────┼────┼────┨
┃4┃雨のち │=$A4&B$1│=$A4&C$1│=$A4&D$1┃
┗━┻━━━━┷━━━━┷━━━━┷━━━━┛
一太郎Ver.3というMS-DOSのワープロソフトを使ったことのある私には、とても懐かしい形式なのですが(笑)。
これを、EXCELのワークシートに簡単に貼り付けるマクロを考えました。
Sub クイズで学ぶEXCEL貼付け()
'
Dim moji(50) As String
'クリップボードの中身を貼付け
ActiveSheet.Paste
'データを配列に読み込んで削除
ys = Selection.Row
xs = Selection.Column
ye = ys + Selection.Rows.Count - 1
i = 1
For y = ys + 3 To ye
dmy = Cells(y, xs).Text
If Not (InStr(1, dmy, "─") > 0 Or InStr(1, dmy, "━") > 0) Then
moji(i) = Cells(y, xs).Text
i = i + 1
End If
Next y
ie = i
Selection.Delete
'データの中身をセルに分配しながら再貼付け
For i = 1 To ie
dmy = "": k = 1
mend = Len(moji(i))
For m = 1 To mend
hitomoji = Mid(moji(i), m, 1)
If (hitomoji = "┃" Or hitomoji = "│") Then
If k > 2 Then
Cells(ys + i - 1, xs + k - 3).Value = Trim(dmy)
End If
k = k + 1
dmy = ""
Else
dmy = dmy + hitomoji
End If
Next m
Next i
Cells(ys, xs).Select
End Sub
使い方は、このマクロをEXCELのブックに組み込んだあと、メルマガの表を選択&コピーして、ワークシート上で貼り付けたいセルをクリックしてから、マクロを走らせればOKです。(上の例では、A1に貼り付けないと上手く計算式が動きません…念のため。)
2008.05.31
[HOME][とまて週報TOP]