dポイントプレゼントキャンペーン実施中!

はじめまして。
下記のようにA列にデータがあるとき、

A列                         B列
資産・現金・預金/金融機関/ストック         (空欄)
資産・-現金/金融機関ストック
資産・-日銀預け金/金融機関ストック
資産・-流動性預金/金融機関ストック
資産・-定期性預金/金融機関/ストック
資産・-譲渡性預金/金融機関/ストック
資産・-外貨預金/金融機関/ストック
資産・財政融資資金預託金/金融機関/ストック
資産・貸出/金融機関/ストック
(この場合は、/ 以降が同じ文字列ですが、実はこの後のデータで、様々なものが、たくさん出てくるのでこの最初の / の記号以降を削除したいのです)

右隣の空欄のB列に表記の編集データを格納するプログラムとして

Sub Test()
Dim i As Integer
Dim s1 As String
For i = 1 To 9
s1 = Cells(i, 1).Value
Cells(i, 2).Value = Left(s1, Len(s1) - InStr(1, s1, "/") - 1)
Next i
End Sub

を実行しましたら、B列には、

資産・現金・預金
資産・-現金/
資産・-日銀預
資産・-流動性預
資産・-定期性預
資産・-譲渡性預
資産・-外貨預金
資産・財政融資資
資産・貸出/金融

となってしまい、うまくいきません。
希望としては

資産・現金・預金
資産・-現金
資産・-日銀預け金
資産・-流動性預金
資産・-定期性預金
資産・-譲渡性預金
資産・-外貨預金
資産・財政融資資金預託金
資産・貸出

としたいのです。

そこで質問です。

① このプログラムのどこがおかしいのでしょうか?
② 次に、B列を新たに作らずに、A列に編集したデータを出したいのですが
  どうすれば良いのでしょうか?

どなたか、ご教示いただければ幸いです。
よろしくお願いいたします。

A 回答 (1件)

>① このプログラムのどこがおかしいのでしょうか?


Sub Test()
Dim i As Integer
Dim s1 As String
  For i = 1 To 9
   s1 = Cells(i, 1).Value
   Cells(i, 2).Value = Left(s1, InStr(s1, "/") - 1) '「Len(s1) - 」が不要
  Next i
End Sub


>② 次に、B列を新たに作らずに、A列に編集したデータを出したいのですが
>  どうすれば良いのでしょうか?
そのコーディングをそのまま使うなら
Sub Test2()
Dim i As Integer
Dim s1 As String
  For i = 1 To 9
   s1 = Cells(i, 1).Value
   Cells(i, 1).Value = Left(s1, InStr(s1, "/") - 1)
  Next i
End Sub
    • good
    • 0
この回答へのお礼

早速ご教示いただきありがとうございました。
①②ともに、出来ました。
なぜ、そこが不要なのか、にわかに理解できませんが、
じっくり勉強しようと思います。
駆け出しですので、またお世話になります。
本当にありがとうございました。

お礼日時:2015/03/31 09:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!