表計算関数で出来なかったら・・・


  表計算関数では・・ちょっとできない?

  そんな事例の一つ・・

  ルーチンワークで一番やりたくない作業・・
  ため息がでてきます。
  実務で、こんなことがよくあります。

そんな一例のご紹介です。

 

1.表計算関数では・・ちょっとできない?
  実務で、こんなことがよくあります。データベースなどに登録するときに・・
  行と列をちゃんと分けて・・データをストックしておかないと後で、困る・・(T_T)

下記の表の・・・ショートカット一覧で・・・


 

2.セルのなかに複数の文字が組み合わされていて・・それを分解して別のセルに書き出す。
  2~3行くらいだったら、手で変更しても・・600行とが1000行とかだったらどうする??
  表計算関数でもできないし・・っていう時・・・


 

3.そういう時・・・にもいろいろ工夫をすると・・・
  なんとかなりますね。


 

4.さまざまなやり方でやってみると・・一瞬でできちゃいます。
  もしも、こんなやりたくないルーチン作業を解消したいものです。


 

5.参考のエクセルワークブック

 

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 **って検索すると出てきます。


2021年1月
 123
45678910
11121314151617
18192021222324
25262728293031
最近の記事
カテゴリ
月別アーカイブ