Excel VBA質問箱 IV

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

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


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

【38071】文字の位置変更 ゆん 06/5/25(木) 23:39 質問[未読]
【38072】Re:文字の位置変更 かみちゃん 06/5/25(木) 23:45 発言[未読]
【38073】Re:文字の位置変更 Kein 06/5/25(木) 23:57 回答[未読]
【38074】Re:文字の位置変更 ゆん 06/5/26(金) 0:12 発言[未読]
【38075】Re:文字の位置変更 かみちゃん 06/5/26(金) 0:18 発言[未読]
【38080】Re:文字の位置変更 ゆん 06/5/26(金) 0:31 発言[未読]
【38077】Re:文字の位置変更 Kein 06/5/26(金) 0:24 発言[未読]
【38079】Re:文字の位置変更 ゆん 06/5/26(金) 0:29 発言[未読]
【38078】Re:文字の位置変更 ゆん 06/5/26(金) 0:26 質問[未読]
【38081】Re:文字の位置変更 Kein 06/5/26(金) 0:42 回答[未読]
【38082】Re:文字の位置変更 ゆみ 06/5/26(金) 0:51 発言[未読]

【38071】文字の位置変更
質問  ゆん  - 06/5/25(木) 23:39 -

引用なし
パスワード
   すみません、質問なんですが

   A
週刊誌250円集英社
雑誌300円不明
今晩のおかず570円マルエツ30
大工用具11250円5656ホームセンター
  ・
  ・
  ・
  ・
  ・
  ・
といった用にAセルに並んであります。
この時に、円を\に変えて更に、値段の
前に持ってきたいのですが、どうすればいいのでしょうか?

データはAセルだけで、250件くらいあります。

【38072】Re:文字の位置変更
発言  かみちゃん  - 06/5/25(木) 23:45 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>   A
>週刊誌250円集英社
>雑誌300円不明
>今晩のおかず570円マルエツ30
>大工用具11250円5656ホームセンター
>  ・
>といった用にA列のセルに並んであります。
>この時に、円を\に変えて更に、値段の
>前に持ってきたい

値段とはどの部分なのか?というところがポイントかと思います。
最初に出てくる数字の前という判断でいいのでしょうか?
この場合、品名の末尾が数字でないことが前提となりますが、それでよろしいでしょうか?

【38073】Re:文字の位置変更
回答  Kein  - 06/5/25(木) 23:57 -

引用なし
パスワード
   こんな感じでしょーか ?

Sub Rep_MyText()
  Dim objRE As Object, Matches As Object
  Dim MyR As Range, C As Range
  Dim CkSt As String
  Dim Pt As Integer  
 
  Set MyR = Range("A:A").SpecialCells(2)
  MyR.Replace "円", ""
  Set objRE = CreateObject("VBScript.RegExp")
  With objRE
   .Pattern = "\d"
   .Global = True
  End With
  For Each C In MyR
   CkSt = C.Text
   If objRE.Test(CkSt) Then
     Set Matches = objRE.Execute(CkSt)
     Pt = Matches(0).FirstIndex + 1
     C.Characters(Pt, 0).Insert "\"
     Set Matches = Nothing
   End If
  Next
  Set objRE = Nothing: Set MyR = Nothing
End Sub

*実行してみると分かるけど・・

大工用具\112505656ホームセンター

なんて結果が出ますよ。了解してるならいいけど。

【38074】Re:文字の位置変更
発言  ゆん  - 06/5/26(金) 0:12 -

引用なし
パスワード
   ▼Kein さん:
どうもありがとうございます!

もともと\になっている場合は、
Replaceの箇所がいらないのですか?

【38075】Re:文字の位置変更
発言  かみちゃん  - 06/5/26(金) 0:18 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から?失礼します。

>もともと\になっている場合は、
>Replaceの箇所がいらないのですか?

実行してみればどうなるかわかります。
「もともと\になっている」というのは、「円という文字が見つからなければ」
という意味ですか?

【38077】Re:文字の位置変更
発言  Kein  - 06/5/26(金) 0:24 -

引用なし
パスワード
   ちょっと意味が分かりません・・。
置換というのは「検索をして」見つかったものだけを置き換える機能なのですが。

【38078】Re:文字の位置変更
質問  ゆん  - 06/5/26(金) 0:26 -

引用なし
パスワード
   ▼Kein さん:
先ほどの応用なんですが、私設計をしておりまして
このようなシートのAセルがあるんですが・・・・
      A
3NAB400D--0121Bシール板(マル90-P)
3NAB400D--0122Bシートパッキン(マル90-P)
SDT-090-GB-211Lグランドボックス(GB2-マル90)
SGB-090-PG-211Lシートパッキン(GB2-マル90)
SDT-090-GP-211Kグランド押さえ(マル90)
SDT-065-PS-221Kシールパッキン(マル65×250-T)
SDT-065-GB-211Lグランドボックス(GB2-マル65)
SGB-065-PG-211Lシートパッキン(GB2-マル65)
SDT-065-GP-211Kグランド押さえ(マル65)
STU-065-PP-221K押さえ板(マル65-U)

      ・
      ・
      ・
      ・
と、いったような場合
このセルの中の”マル”を直後の数字の後に置き換えしたいのです。

すみません、VBAが理解しきれていなくて・・・・

【38079】Re:文字の位置変更
発言  ゆん  - 06/5/26(金) 0:29 -

引用なし
パスワード
   ▼Kein さん:
>ちょっと意味が分かりません・・。
>置換というのは「検索をして」見つかったものだけを置き換える機能なのですが。

Keinさん、いつも拝見させていただいております。
一つ上にホントの趣旨をかかせていただきました。

私なりに、簡単な物から理解しようと思ったのですが・・・

【38080】Re:文字の位置変更
発言  ゆん  - 06/5/26(金) 0:31 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>横から?失礼します。
>
>>もともと\になっている場合は、
>>Replaceの箇所がいらないのですか?
>
>実行してみればどうなるかわかります。
>「もともと\になっている」というのは、「円という文字が見つからなければ」
>という意味ですか?

かみちゃんさん、ありがとうございます。
ホントにしたいことは、もう一つの問いに書かせて
頂きました。

よければ、ヒントでもいただければ幸いです。

【38081】Re:文字の位置変更
回答  Kein  - 06/5/26(金) 0:42 -

引用なし
パスワード
   初めからそのままを提示してれば、二度手間にならずに済みましたよね ?
ま、しょーがないから新ためてサンプルコードをUPします。
"マル"の直後の数値が、必ず2桁であるという前提で

Sub Data_Rep()
  Dim C As Range
  Dim Pt As Integer
 
  For Each C In Range("A1", Range("A65536").End(xlUp))
   Pt = InStr(1, C.Value, "マル")
   If Pt > 0 Then
     C.Characters(Pt + 4, 0).Insert "マル"
     C.Characters(Pt, 2).Delete
   End If
  Next
End Sub

【38082】Re:文字の位置変更
発言  ゆみ  - 06/5/26(金) 0:51 -

引用なし
パスワード
   ▼ゆん さん:
>▼Kein さん:
>先ほどの応用なんですが、私設計をしておりまして
>このようなシートのAセルがあるんですが・・・・
>      A
>3NAB400D--0121Bシール板(マル90-P)
>3NAB400D--0122Bシートパッキン(マル90-P)
>SDT-090-GB-211Lグランドボックス(GB2-マル90)
>SGB-090-PG-211Lシートパッキン(GB2-マル90)
>SDT-090-GP-211Kグランド押さえ(マル90)
>SDT-065-PS-221Kシールパッキン(マル65×250-T)
>SDT-065-GB-211Lグランドボックス(GB2-マル65)
>SGB-065-PG-211Lシートパッキン(GB2-マル65)
>SDT-065-GP-211Kグランド押さえ(マル65)
>STU-065-PP-221K押さえ板(マル65-U)
>
>      ・
>      ・
>      ・
>      ・
>と、いったような場合
>このセルの中の”マル”を直後の数字の後に置き換えしたいのです。
>
>すみません、VBAが理解しきれていなくて・・・・

普通に読めば、
マル65→65マル
とかいうようにやりたいのかと思いますが、質問の仕方として『直後の数字の後』となっているので、数字が何桁かは分からず単純に1桁だけ数字を判定して
マル65→6マル5
こんな考え方をすることもできますよね。

私は知識もないので、Instrで"マル"の位置を調べてから、直後の文字からIsNumericで判定することしか思いつきません。

ただ、何かを作るとか作ってもらう上で、いろいろな考えができちゃうような仕様の書き方は混乱を招くし、誰かに作ってもらうにしたら、二度手間になる可能性があるのではっきりさせておく必要があるでしょうね。

答えでなくてごめんなさい。

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