Excel VBA質問箱 IV

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

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


2157 / 13645 ツリー ←次へ | 前へ→

【69615】セル内のデータを部分的に削除する方法 I・O 11/8/11(木) 2:58 質問[未読]
【69616】Re:セル内のデータを部分的に削除する方法 Hirofumi 11/8/11(木) 5:17 回答[未読]
【69617】Re:セル内のデータを部分的に削除する方法 UO3 11/8/11(木) 6:04 回答[未読]
【69618】Re:セル内のデータを部分的に削除する方法 Jaka 11/8/11(木) 9:19 発言[未読]
【69620】Re:セル内のデータを部分的に削除する方法 Jaka 11/8/11(木) 10:06 発言[未読]
【69619】Re:セル内のデータを部分的に削除する方法 momo 11/8/11(木) 9:54 発言[未読]
【69623】Re:セル内のデータを部分的に削除する方法 momo 11/8/11(木) 13:33 発言[未読]
【69621】Re:セル内のデータを部分的に削除する方法 UO3 11/8/11(木) 12:32 発言[未読]
【69622】Re:セル内のデータを部分的に削除する方法 UO3 11/8/11(木) 12:59 発言[未読]
【69632】Re:セル内のデータを部分的に削除する方法 I・O 11/8/12(金) 1:01 お礼[未読]

【69615】セル内のデータを部分的に削除する方法
質問  I・O  - 11/8/11(木) 2:58 -

引用なし
パスワード
    失礼します。うまい方法が思いつかないため質問させて頂きました。

 ■1333■164564■1616〜

 のようなデータがセルにあり、■はスペースだとします。マクロで2番目の■まで(■1333■の部分)を消す方法はありませんでしょうか。区切り位置やREPLACEでやってもうまくいきません。もし、ご存知のかたがいらっしゃいましたらお教え願えませんでしょうか?

【69616】Re:セル内のデータを部分的に削除する方法
回答  Hirofumi  - 11/8/11(木) 5:17 -

引用なし
パスワード
   こんなのでは?

Public Function Test1(vntValue As Variant) As Variant

  Test1 = Replace(vntValue, " ", "", 1, 2, vbBinaryCompare)

End Function

若しくは

Public Function Test2(vntValue As Variant) As Variant

  Test2 = Replace(vntValue, " ", "", 1, 2, vbTextCompare)

End Function

【69617】Re:セル内のデータを部分的に削除する方法
回答  UO3  - 11/8/11(木) 6:04 -

引用なし
パスワード
   ▼I・O さん:

おはようございます

(書いていましたらHifofumiさんから、すでにご提示がありましたので重複部分ありますがアップします)

ワークシート関数でいいますと、たとえばA1に、この文字列が入っているとすれば
=SUBSTITUTE(SUBSTITUTE(A1,"■","",1),"■","",1)
これでOKですね。

このSUBSTITUTEは、WorkSheetFunction.Substitue として使うことができます。
で、やってみたのですが、初めてのことでいまくいきません。
ですので、これをEvaluateするコードと、別方式のコードを。

Sub Test1()
  Dim myText As String
  
  myText = Evaluate("=SUBSTITUTE(SUBSTITUTE(A1,""■"","""",1),""■"","""",1)")
  MsgBox myText
  
End Sub

Sub Test2()
  Dim z As Long
  Dim x As Long
  Dim myText As String
  
  myText = Range("A1").Value
  
  For x = 1 To 2
    z = InStr(myText, "■")
    If z = 0 Then Exit For
    myText = WorksheetFunction.Replace(myText, z, 1, "")
  Next
  
  MsgBox myText

End Sub

【69618】Re:セル内のデータを部分的に削除する方法
発言  Jaka  - 11/8/11(木) 9:19 -

引用なし
パスワード
   ▼UO3 さん:
>このSUBSTITUTEは、WorkSheetFunction.Substitue として使うことができます。
>で、やってみたのですが、初めてのことでいまくいきません。

え〜、うそ〜。
難しく考えすぎでは?

st = "■1333■164564■1616〜"
MsgBox Application.Substitute(Application.Substitute(st, "■", "", 1), "■", "", 1)

【69619】Re:セル内のデータを部分的に削除する方法
発言  momo  - 11/8/11(木) 9:54 -

引用なし
パスワード
   ▼I・O さん:
こんな方法でも

Sub test()
 buf = "■1333■164564■1616〜"
 MsgBox Split(buf, "■", 3)(2)
End Sub

【69620】Re:セル内のデータを部分的に削除する方法
発言  Jaka  - 11/8/11(木) 10:06 -

引用なし
パスワード
   ▼Jaka さん:
>▼UO3 さん:
>>このSUBSTITUTEは、WorkSheetFunction.Substitue として使うことができます。
>>で、やってみたのですが、初めてのことでいまくいきません。
>
>え〜、うそ〜。
>難しく考えすぎでは?

失礼しました。

>■1333■164564■1616〜
>のようなデータがセルにあり、■はスペースだとします。マクロで2番目の■まで(■1333■の部分)を消す方法はありませんでしょうか。

>■1333■164564■1616〜
 ↓
164564■1616〜
ですね?

【69621】Re:セル内のデータを部分的に削除する方法
発言  UO3  - 11/8/11(木) 12:32 -

引用なし
パスワード
   ▼I・O さん:

Jakaさんからご指摘ありましたが、WorkSheetFunction.Substituteもできました。
できかったと申し上げたのは、同じ■ですけど、セルに入れた■とコードで記述した■の文字コードが
違っていたようです。

ただし、これも、Jakaさんのレスにありますが、私も (■1333■の部分)を読み間違えていました。

アップしたコードは、とりあえず無視してください。

【69622】Re:セル内のデータを部分的に削除する方法
発言  UO3  - 11/8/11(木) 12:59 -

引用なし
パスワード
   ▼I・O さん:

すでにmomoさんから最も適切だと思えるコードがアップされていますが
無理やり別案で2つほど。

Sub TestX()
  Dim myRE As Object
  Dim myText As String
  Dim myPat As String
  Set myRE = CreateObject("VBScript.RegExp")
  myText = Range("A1").Value
  With myRE
    .Pattern = "■.+?■"
    myText = .Replace(myText, "")
  End With
  MsgBox myText
  Set myRE = Nothing
End Sub

Sub TestZ()
  Dim myText As String
  Dim n As Long
  myText = Range("A1").Value
  n = InStr(myText, "■")
  If n > 0 Then
    n = InStr(n + 1, myText, "■")
    If n > 0 Then myText = Mid(myText, n + 1)
  End If
  MsgBox myText
End Sub

【69623】Re:セル内のデータを部分的に削除する方法
発言  momo  - 11/8/11(木) 13:33 -

引用なし
パスワード
   仮にSplitを知らなかったり、使えない環境でも

Sub test2()
 buf = "■1333■164564■1616〜"
 For i = 1 To 2
  buf = Mid(buf, InStr(1, buf, "■") + 1)
 Next i
 MsgBox buf
End Sub

こんなので簡単に済ます事もできるかな?

【69632】Re:セル内のデータを部分的に削除する方法
お礼  I・O  - 11/8/12(金) 1:01 -

引用なし
パスワード
    Hirofumi 様、UO3 様、 Jaka 様、momo 様

 皆様、迅速な回答を頂きまして本当にありがとうございます。おかげで思うとおりの動作が実行できました。あと、UO3 様、Jaka 様には説明不足でご迷惑をおかけして申し訳ありません。■だと分かりにくいですよね。
 今後も日々精進していこうと思います。では、失礼致しました。

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