Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1280 / 13644 ツリー ←次へ | 前へ→

【75266】特定の文字内の値抽出 VBA初心者 14/1/25(土) 20:59 質問[未読]
【75269】Re:特定の文字内の値抽出 γ 14/1/26(日) 9:39 発言[未読]
【75271】Re:特定の文字内の値抽出 VBA初心者 14/1/26(日) 10:39 質問[未読]
【75275】Re:特定の文字内の値抽出 γ 14/1/28(火) 22:08 発言[未読]
【75282】Re:特定の文字内の値抽出 VBA初心者 14/2/1(土) 8:59 お礼[未読]

【75266】特定の文字内の値抽出
質問  VBA初心者  - 14/1/25(土) 20:59 -

引用なし
パスワード
   教えて下さい。


シート内に、『D列に○○ 2011年9月”、”△△ XXXX年MM月』別にn個のデータが複数ありそれぞれに『A列に○○又は△△n』『B列に2011又はXXnn』△△n』『C列に9又はMM』に埋め込みたいのですが。


・表

 A列 B列 C列   D列       E列
           ○○ 2011年9月    
             番号       数量        
            1           1001.7
            2           1013.8
            3           1011.1
            n           1010.4
         
          △△n XXnn年MM月
            1          1.7
            2         100.0
            3         32.0
            n         25.8
         
          □□□ XXXX年MM月
            1          1.7
            2         100.0
            3         32.0
            n         25.8
  

【75269】Re:特定の文字内の値抽出
発言  γ  - 14/1/26(日) 9:39 -

引用なし
パスワード
   こんにちは。
「 番号       数量  」
以下のデータは、何列の何行目にあるのですか?
行のことも誤解の無いように書いたほうがいいですね。

繰り返し処理のなかで、
文字列を分解する必要がある場所かどうかは、
文字列中に"年" がふくまれているかどうかで判定します。
If InStr(s,"年") > 0 Then といった書き方です。

文字列を分解する部分は下のコードを参考にしてください。
繰り返しの処理はご自分で組み立ててみてください。

Sub test()
  Dim s As String
  Dim ary
  Dim s1 As String
  Dim s2 As String
  Dim s3 As String
  Dim s4 As String

  s = "○○ 2011年9月"
  ary = Split(s, " ", 2) 'スペースが二つ以上あることも考慮。

  s1 = ary(0)           '' "○○"
  s2 = Trim(ary(1))        '' "2011年9月"

  ary = Split(s2, "年")
  s3 = ary(0)           '' "2011"
  s4 = Replace(ary(1), "月", "") '' "9"

End Sub

【75271】Re:特定の文字内の値抽出
質問  VBA初心者  - 14/1/26(日) 10:39 -

引用なし
パスワード
   γさん ありがとうございます。
表について追記します。

・条件
行番行は一定ではありません。
○○ 2011年9月 
△△n XXnn年MM月
□□□ XXXX年MM月
の文字の2行下に』『D列に1』の値があるだけです。

・表

行番号 A列 B列 C列   D列      E列
1             ○○ 2011年9月    
2             番号      数量        
3              1        1001.7
4              2        1013.8
5              3        1011.1
n              n        1010.4
n+1            △△n XXnn年MM月
n+2             番号      数量
n+3             1          1.7
n+4             2         100.0
n+5             3         32.0
n+6

【75275】Re:特定の文字内の値抽出
発言  γ  - 14/1/28(火) 22:08 -

引用なし
パスワード
   追記ありがとうございました。
念のため、仕上がりの例も示してください。

また、提示したコードはわかりますか?
その後の状況をお知らせください。

【75282】Re:特定の文字内の値抽出
お礼  VBA初心者  - 14/2/1(土) 8:59 -

引用なし
パスワード
   遅くなりすみません。

マクロが2種類となりましたが、目的は達成できました。
ありがとうございました。

Sub Sgy1()
Dim GYo As Long
Dim myStr As String
Dim tmp As Variant

For GYo = 6 To 10000
If Cells(GYo, 4).Value = 1 Then
myStr = Cells(GYo - 2, 4).Value
tmp = Split(Cells(GYo - 2, 4), " ")
Cells(GYo, 1) = tmp(0)
Cells(GYo, 2).Value = Mid(myStr, InStr(myStr, " ") + 2, InStr(myStr, "年") - InStr(myStr, " ") - 2)
Cells(GYo, 3).Value = Mid(myStr, InStr(myStr, "年") + 1, InStr(myStr, "月") - InStr(myStr, "年") - 1)

 End If
  Next GYo
End Sub


Sub Sgyo2()
Dim GYo As Long
Dim myStr As String
Dim tmp As Variant

For GYo = 6 To 10000
If 1 < Cells(GYo, 4).Value And Cells(GYo, 4).Value <= 100 Then
Cells(GYo, 1).Value = Cells(GYo - 1, 1).Value
Cells(GYo, 2).Value = Cells(GYo - 1, 2).Value
Cells(GYo, 3).Value = Cells(GYo - 1, 3).Value

 End If
  Next GYo
End Sub

1280 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free