Excel VBA質問箱 IV

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

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


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

【22160】セル内の指定した文字以降を削除 Avene 05/2/10(木) 10:41 質問[未読]
【22161】Re:セル内の指定した文字以降を削除 IROC 05/2/10(木) 10:47 回答[未読]
【22162】Re:セル内の指定した文字以降を削除 Avene 05/2/10(木) 11:01 質問[未読]
【22166】Re:セル内の指定した文字以降を削除 IROC 05/2/10(木) 12:58 回答[未読]
【22167】Re:セル内の指定した文字以降を削除 Avene 05/2/10(木) 13:01 質問[未読]
【22168】Re:セル内の指定した文字以降を削除 IROC 05/2/10(木) 13:28 回答[未読]
【22169】Re:セル内の指定した文字以降を削除 Avene 05/2/10(木) 13:53 質問[未読]
【22171】Re:セル内の指定した文字以降を削除 IROC 05/2/10(木) 14:12 回答[未読]
【22172】Re:セル内の指定した文字以降を削除 sa 05/2/10(木) 14:36 発言[未読]
【22173】Re:セル内の指定した文字以降を削除 Avene 05/2/10(木) 15:02 お礼[未読]
【22175】Re:セル内の指定した文字以降を削除 sa 05/2/10(木) 15:25 発言[未読]
【22199】Re:セル内の指定した文字以降を削除 Avene 05/2/10(木) 20:04 お礼[未読]
【22209】Re:セル内の指定した文字以降を削除 sa 05/2/11(金) 16:21 発言[未読]

【22160】セル内の指定した文字以降を削除
質問  Avene  - 05/2/10(木) 10:41 -

引用なし
パスワード
   おはようございます。
VBA初心者です。

セル内の指定した文字列以外を削除するマクロを作成しようとしています。
例「あいうえおあいうえお\aiueo\ABC(スペース)name(XXXX)YYY 」
のABC以外を削除したいのですが、下記のマクロでABC以前までは削除できるのですが
name以降を削除する方法がわかりません。
どなたかご教授いただけるようお願いいたします。


++++++++++++++++++++++++++++++++++++++

Sub test()

Dim D As Range


  For Each D In Range("A1", Range("A65536").End(xlUp))
   D.Value = Mid(D.Value, InStrRev(D.Value, "\") + 1)  
  Next


End Sub
++++++++++++++++++++++++++++++++++++++

【22161】Re:セル内の指定した文字以降を削除
回答  IROC  - 05/2/10(木) 10:47 -

引用なし
パスワード
   >name以降を削除する方法がわかりません。
条件は何ですか?

【22162】Re:セル内の指定した文字以降を削除
質問  Avene  - 05/2/10(木) 11:01 -

引用なし
パスワード
   ▼IROC さん:
返信ありがとうございます。

>>name以降を削除する方法がわかりません。
>条件は何ですか?

A列において文字列の中のnameより右側(name以降)を削除したいです。

恐縮ですが何か良い方法がありましたらご教授くださぃ。

【22166】Re:セル内の指定した文字以降を削除
回答  IROC  - 05/2/10(木) 12:58 -

引用なし
パスワード
   >A列において文字列の中のnameより右側(name以降)を削除したいです。
それが条件ということは、nameというのは決まった文字列なのですか!
てっきり色々な文字列が入るのかと思ってましたが?

プログラムが判定できる明確な条件は?
InstrRevで( 以降の削除?

【22167】Re:セル内の指定した文字以降を削除
質問  Avene  - 05/2/10(木) 13:01 -

引用なし
パスワード
   ▼IROC さん:
度々すみません。。

>>A列において文字列の中のnameより右側(name以降)を削除したいです。
>それが条件ということは、nameというのは決まった文字列なのですか!
>てっきり色々な文字列が入るのかと思ってましたが?

 nameは決まった文字列です。

>プログラムが判定できる明確な条件は?
>InstrRevで( 以降の削除?

 nameも含めname以降の削除をしたいのですが・・。

【22168】Re:セル内の指定した文字以降を削除
回答  IROC  - 05/2/10(木) 13:28 -

引用なし
パスワード
   (スペース)
 ↑
これは何ですか?

もっと具体例を何件か挙げていただかないと、
推測で回答しなくてはならなく、無駄な質疑を繰り返す必要があり苦痛です。


置換で、
(スペース)*
 ↓
""
としては?

【22169】Re:セル内の指定した文字以降を削除
質問  Avene  - 05/2/10(木) 13:53 -

引用なし
パスワード
   ▼IROC さん:
説明不足ですみません。

>(スペース)
> ↑
>これは何ですか?
  
 スペースはそのままスペースをあらわしたつもりでした。すみません。。
 セルの中身をそのまま書くと
 下記になります。
  例「あいうえおあいうえお\aiueo\ABC name(XXXX)YYY 」
 

 A列の中にあいうえおあいうえお¥aiueo →パス名 不特定文字、
 ABC→ファイル名 不特定文字 その後ろにスペースを
 はさんで name(XXXX)YYY →(XXXX)YYYは不特定文字 があります。
 
 
 A列でのセルの中身のうち 特定文字「data〜」 の〜の部分を削除する
 というのが条件です。
 
 
 

【22171】Re:セル内の指定した文字以降を削除
回答  IROC  - 05/2/10(木) 14:12 -

引用なし
パスワード
   置き換えではできないのですね?
それならば、最初にご自分で提示されているのと同じように
InStr関数とMid関数、Len関数などでできませんか?

【22172】Re:セル内の指定した文字以降を削除
発言  sa  - 05/2/10(木) 14:36 -

引用なし
パスワード
   ▼Avene さん:
Mid の代わりに Leftを使ってみてください


>おはようございます。
>VBA初心者です。
>
>セル内の指定した文字列以外を削除するマクロを作成しようとしています。
>例「あいうえおあいうえお\aiueo\ABC(スペース)name(XXXX)YYY 」
>のABC以外を削除したいのですが、下記のマクロでABC以前までは削除できるのですが
>name以降を削除する方法がわかりません。
>どなたかご教授いただけるようお願いいたします。
>
>
>++++++++++++++++++++++++++++++++++++++
>
>Sub test()
>
>Dim D As Range
>
>
>  For Each D In Range("A1", Range("A65536").End(xlUp))
>   D.Value = Mid(D.Value, InStrRev(D.Value, "\") + 1)  
>  Next
>
>
>End Sub
>++++++++++++++++++++++++++++++++++++++

【22173】Re:セル内の指定した文字以降を削除
お礼  Avene  - 05/2/10(木) 15:02 -

引用なし
パスワード
   ▼sa さん:

ありがとうございます。

>Mid の代わりに Leftを使ってみてください

Left を使い下記のマクロで実行してみたのですが
なぜか「name〜」の 「na」部分だけのこってしまいます。

実は、+1とかの意味がわかっていないのですが
これはどういう意味なのでしょうか?
ご教授お願いいたします。。


>>++++++++++++++++++++++++++++++++++++++
>>
>>Sub test()
>>
>>Dim D As Range
>>
>>
>>  For Each D In Range("A1", Range("A65536").End(xlUp))
>>   D.Value = Mid(D.Value, InStrRev(D.Value, "\") + 1)  
>>  Next

>>  For Each F In Range("A1", Range("A65536").End(xlUp))
>>   F.Value = Left(D.Value, InStrRev(D.Value, "date") + 1)  
>>  Next

>>
>>End Sub
>>++++++++++++++++++++++++++++++++++++++

【22175】Re:セル内の指定した文字以降を削除
発言  sa  - 05/2/10(木) 15:25 -

引用なし
パスワード
   ▼Avene さん:
質問は、
>>name以降を削除する方法がわかりません。
ですよね
>>>   F.Value = Left(D.Value, InStrRev(D.Value, "date") + 1)
date 何のことですか?
InStrRev(D.Value, "date")は、
文字列 D.Valueを右から調べて、はじめに見つかった
文字列dataが文字列 D.Valueの(左から)何番目の文字かを調べています
一度InStrRev(D.Value, "date")がどんな数値化調べれば             
文字列 D.Valueのどの位置を示しているかわかるはずです


>▼sa さん:
>
>ありがとうございます。
>
>>Mid の代わりに Leftを使ってみてください
>
>Left を使い下記のマクロで実行してみたのですが
>なぜか「name〜」の 「na」部分だけのこってしまいます。
>
>実は、+1とかの意味がわかっていないのですが
>これはどういう意味なのでしょうか?
>ご教授お願いいたします。。
>
>
>>>++++++++++++++++++++++++++++++++++++++
>>>
>>>Sub test()
>>>
>>>Dim D As Range
>>>
>>>
>>>  For Each D In Range("A1", Range("A65536").End(xlUp))
>>>   D.Value = Mid(D.Value, InStrRev(D.Value, "\") + 1)  
>>>  Next
>
>>>  For Each F In Range("A1", Range("A65536").End(xlUp))
>>>   F.Value = Left(D.Value, InStrRev(D.Value, "date") + 1)  
>>>  Next
>
>>>
>>>End Sub
>>>++++++++++++++++++++++++++++++++++++++

【22199】Re:セル内の指定した文字以降を削除
お礼  Avene  - 05/2/10(木) 20:04 -

引用なし
パスワード
   ▼sa さん:

返信ありがとうございます。

>質問は、
>>>name以降を削除する方法がわかりません。
>ですよね
>>>>   F.Value = Left(D.Value, InStrRev(D.Value, "date") + 1)
>date 何のことですか?

すみません。「name」との間違いです。。

>InStrRev(D.Value, "date")は、
>文字列 D.Valueを右から調べて、はじめに見つかった
>文字列dataが文字列 D.Valueの(左から)何番目の文字かを調べています
>一度InStrRev(D.Value, "date")がどんな数値化調べれば             
>文字列 D.Valueのどの位置を示しているかわかるはずです
>
>
 ありがとうございました。
 では、結局「+1」というのはD.Valueの位置から1つ目を意味しているのでしょうか?
 まだVBAの方はうまく起動できていないのですが
 もう少しいろいろ試してみます。
 
 親切なご教授ありがとうございました。

【22209】Re:セル内の指定した文字以降を削除
発言  sa  - 05/2/11(金) 16:21 -

引用なし
パスワード
   ▼Avene さん:
> では、結局「+1」というのはD.Valueの位置から1つ目を意味しているのでしょうか

D.Valueの文字列の左から
InStrRev(D.Value, "date")の値に+1したところです

例えば)
D.ValueがABDDEFGHとすると
InStrRev(D.Value, "D")なら
InStrRev(D.Value, "D")は4になります
InStrRev(D.Value, "date") + 1は5なので
Left(D.Value, InStrRev(D.Value, "date") + 1)は
ABCDEFGHの左から5番目までの文字列を抽出するので
Left(D.Value, InStrRev(D.Value, "date") + 1)はABDDEになります

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