表計算関数では・・ちょっとできない?
そんな事例の一つ・・
ルーチンワークで一番やりたくない作業・・
ため息がでてきます。
実務で、こんなことがよくあります。
そんな一例のご紹介です。
1.表計算関数では・・ちょっとできない?
実務で、こんなことがよくあります。データベースなどに登録するときに・・
行と列をちゃんと分けて・・データをストックしておかないと後で、困る・・(T_T)
下記の表の・・・ショートカット一覧で・・・
2.セルのなかに複数の文字が組み合わされていて・・それを分解して別のセルに書き出す。
2~3行くらいだったら、手で変更しても・・600行とが1000行とかだったらどうする??
表計算関数でもできないし・・っていう時・・・
3.そういう時・・・にもいろいろ工夫をすると・・・
なんとかなりますね。
4.さまざまなやり方でやってみると・・一瞬でできちゃいます。
もしも、こんなやりたくないルーチン作業を解消したいものです。
6.VBのコードはこんな感じで・・・
‘--------------------
‘一定の処理を行う
Sub KeySet()
Dim LastRow As Long ‘最終行を取得する変数
Dim LastColumn As Long ‘最終列を取得する変数
Dim Row0, Col0 As Long ‘繰り返し処理を行う為の変数
Dim Sstr As String ‘一旦セル内容を文字列に収納する
Dim SpStr As Variant ”文字列の配列を収納する変数
LastRow = Cells(Rows.Count, 6).End(xlUp).Row
LastColumn = Cells(2, Columns.Count).End(xlToLeft).Column
For Row0 = 5 To LastRow ‘5行目から最終行まで
Select Case InStr(1, Cells(Row0, 6), ” (“)
Case Is > 0
Sstr = Mid(Cells(Row0, 6), 1, InStr(1, Cells(Row0, 6), ” (“))
Case 0
Sstr = Cells(Row0, 6)
Case Else
End Select
‘指定したセル内に” + “という文字列がはいっているかどうか? ‘
Select Case InStr(1, Sstr, ” + “) ‘InStrの戻り値は開始文字列
Case Is > 1 ‘指定したセル内に” + “という文字列がはいっているかどうか? ‘
SpStr = Split(Sstr, ” + “)
For Col0 = 0 To UBound(SpStr)
Cells(Row0, Col0 + 2).Value = SpStr(Col0)
Next Col0
Erase SpStr
Case Else ‘入っていない場合
Cells(Row0, 2) = Sstr
End Select
Next Row0 ‘ここまでの間を繰り返す
End Sub
‘------------------
‘Dim で宣言した変数以外の訳のわからないものは、netでvb **って検索すると出てきます。