Excel VBA質問箱 IV

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

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


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

【45451】数値と記号以外の抜き出し方法 質問(煮詰まった) 06/12/25(月) 12:09 質問[未読]
【45452】Re:数値と記号以外の抜き出し方法 りん 06/12/25(月) 12:47 回答[未読]
【45453】Re:数値と記号以外の抜き出し方法 質問(煮詰まった) 06/12/25(月) 13:23 発言[未読]
【45454】Re:数値と記号以外の抜き出し方法 Blue 06/12/25(月) 13:33 回答[未読]
【45464】Re:数値と記号以外の抜き出し方法 質問(煮詰まった) 06/12/25(月) 16:52 質問[未読]
【45466】Re:数値と記号以外の抜き出し方法 Blue 06/12/25(月) 17:05 回答[未読]
【45467】Re:数値と記号以外の抜き出し方法 Blue 06/12/25(月) 17:21 発言[未読]
【45476】Re:数値と記号以外の抜き出し方法 Blue 06/12/26(火) 11:03 発言[未読]
【45455】Re:数値と記号以外の抜き出し方法 りん 06/12/25(月) 13:33 回答[未読]
【45465】Re:数値と記号以外の抜き出し方法 質問(煮詰まった) 06/12/25(月) 16:56 質問[未読]
【45468】Re:数値と記号以外の抜き出し方法 りん 06/12/25(月) 18:56 回答[未読]
【45488】Re:数値と記号以外の抜き出し方法 質問(煮詰まった) 06/12/27(水) 9:45 お礼[未読]
【45490】Re:数値と記号以外の抜き出し方法 Blue 06/12/27(水) 10:04 発言[未読]
【45489】Re:数値と記号以外の抜き出し方法 質問(煮詰まった) 06/12/27(水) 9:46 お礼[未読]

【45451】数値と記号以外の抜き出し方法
質問  質問(煮詰まった)  - 06/12/25(月) 12:09 -

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

 ファイル一覧表を名称順に並び変えたいのでですが
 その際に処理で困っているので教えて下さい。

 一覧表上に
 
 ああああああ03・10.pdf
 050114いいいいいい.pdf
 050526_qqqqqq_うううううう.html
 05・07・08えええええええ.pdf
 060101アアアアア.pdf
 0501わわわわわわわわわ.PDF

 の一覧表があり、名称順に並び替えをしたいのですが
 この際に不要な日付と記号は除き
 
 ああああああ
 いいいいいい
 うううううう
 えええええええ
 アアアアア
 わわわわわわわわわ

 とした項目を独立させて作成したいのですが、お手数お掛け致しますが
 サンプル宜しくお願いします。

【45452】Re:数値と記号以外の抜き出し方法
回答  りん E-MAIL  - 06/12/25(月) 12:47 -

引用なし
パスワード
   質問(煮詰まった) さん、こんにちわ。

> 一覧表上に
> ああああああ03・10.pdf
> 050114いいいいいい.pdf
> の一覧表があり、名称順に並び替えをしたいのですが
> この際に不要な日付と記号は除き
> 
> ああああああ
> いいいいいい
セルに入っているものとして、

> サンプル宜しくお願いします。
ひらがな、カタカナの部分だけ取り出す関数にしてみました。

Function HKGet(arg1 As String) As String
  Dim a1 As String, a2 As String
  For II = 1 To Len(arg1)
   a1 = Mid(arg1, II, 1) 'II文字目
    '半角文字コードで判定(濁点等があるかもしれないので更に左のみ)
   Select Case Left(StrConv(a1, vbKatakana + vbNarrow), 1)
     Case "ヲ" To "ン" '半角文字のコード表で意味を確認してみてね
      a2 = a2 + a1
   End Select
  Next
  '関数の結果
  HKGet = a2
End Function

こんな感じです。
A1セルに、ああああああ03・10.pdf
B1セルに=HKGet(A1)と入れてみてください。

【45453】Re:数値と記号以外の抜き出し方法
発言  質問(煮詰まった)  - 06/12/25(月) 13:23 -

引用なし
パスワード
   ありがとうございます。

 三洋電機
 シャープ
 松下電器産業のように漢字も利用しているのですが

 漢字の場合は何か、手立てありますか?

【45454】Re:数値と記号以外の抜き出し方法
回答  Blue  - 06/12/25(月) 13:33 -

引用なし
パスワード
   消したい文字列が、ASCIIコードの範囲(0〜127(0x00〜0x7f))だけであれば、
一文字ずつチェックしていけばよいでしょう。

Dim s As String
s = "123:シャープABC"

Dim str As String
Dim i As Long
Dim code As Integer
For i = 1 To Len(s)
  code = Asc(Mid$(s, i, 1))
  If code < 0 Or code > 127 Then
    str = str & Chr$(code)
  End If
Next
MsgBox str

参考:アスキーコード表
h t t p://www9.plala.or.jp/sgwr-t/c_sub/ascii.html

【45455】Re:数値と記号以外の抜き出し方法
回答  りん E-MAIL  - 06/12/25(月) 13:33 -

引用なし
パスワード
   質問(煮詰まった) さん、こんにちわ。

> 三洋電機
> シャープ
> 松下電器産業のように漢字も利用しているのですが
>
> 漢字の場合は何か、手立てありますか?

全角にして、文字コードの範囲で分岐しました。
Function HKGet2(arg1 As String) As String
  Dim a1 As String, a2 As String
  For II = 1 To Len(arg1)
   a1 = Mid(arg1, II, 1) 'II文字目
    '全角文字コードで判定(濁点等があるかもしれないので更に左のみ)
   Select Case Asc(StrConv(a1, vbWide))
     Case Is < Asc("ぁ") '文字コード表で意味を確認してみてね
      '無視
     Case Is <= Asc("ヶ")
      '追加
      a2 = a2 + a1
     Case Is < Asc("亜")
      '無視
     Case Else
      '追加
      a2 = a2 + a1
   End Select
  Next
  '関数の結果
  HKGet2 = a2
End Function

こんな感じです。
この場合は外字とかも入りますので、文字コードの領域を限定したいときは、文字コード表を参考にCase文を追加してください。

【45464】Re:数値と記号以外の抜き出し方法
質問  質問(煮詰まった)  - 06/12/25(月) 16:52 -

引用なし
パスワード
   上記処理で大半のものは取得できるのですが
SKY04・02.pdf
が・のみで抽出されたりするのですが・・・

【45465】Re:数値と記号以外の抜き出し方法
質問  質問(煮詰まった)  - 06/12/25(月) 16:56 -

引用なし
パスワード
    シートに=HKGet(A1)を指定すると 
 #NAME?と表示されるのですが・・・


 

【45466】Re:数値と記号以外の抜き出し方法
回答  Blue  - 06/12/25(月) 17:05 -

引用なし
パスワード
   "・"はASCIIコードではないからです。
(文字コード165で127より大きいから。)

ほかにも"「"、"」"、"、"がおそらく残っちゃうでしょう。

>SKY04・02.pdf
は空文字でOKでいいなら、


>  If code < 0 Or code > 127 Then
>    str = str & Chr$(code)
>  End If
を Select Case文にして意図しない文字は除外するようにすればいいです。

Dim s As String
s = "SKY04・02.pdf"

Dim str As String
Dim tmp As String
Dim i As Long
Dim code As Integer
For i = 1 To Len(s)
  tmp = Mid$(s, i, 1)
  Select Case Asc(tmp)
  Case 0 To 127  ' 対象外
  Case Asc("・")  ' 対象外
  Case Asc("「")  ' 対象外
  Case Asc("」")  ' 対象外
  Case Asc("、")  ' 対象外
  Case Else
    str = str & tmp
  End Select
Next

【45467】Re:数値と記号以外の抜き出し方法
発言  Blue  - 06/12/25(月) 17:21 -

引用なし
パスワード
   "。"が抜けていました。

逆に255以下の文字コードから半角カタカナを対象にしたほうがよいかも。

Dim s As String
s = "SKY04・02.pdf"

Dim str As String
Dim tmp As String
Dim i As Long
Dim code As Integer
For i = 1 To Len(s)
  tmp = Mid$(s, i, 1)
  Select Case Asc(tmp)
  Case Is < 0     ' 全角文字
    str = str & tmp
  Case &HA6 To &HDF  ' 半角カタカナ
    str = str & tmp
  End Select
Next
MsgBox str

ちなみに、全角の記号をはじくことは出来ません。
その場合、正規表現を使って、半角カタカナ、全角ひらがな、全角カタカナ、漢字
の組合せというふうにすることになるでしょう。

【45468】Re:数値と記号以外の抜き出し方法
回答  りん E-MAIL  - 06/12/25(月) 18:56 -

引用なし
パスワード
   質問(煮詰まった) さん、こんばんわ。
> シートに=HKGet(A1)を指定すると 
> #NAME?と表示されるのですが・・・
今回の関数は
Function HKGet2(arg1 As String) As String
なので、
=HKGet2(A1) です。
まぎらわしくてごめんなさい。

【45476】Re:数値と記号以外の抜き出し方法
発言  Blue  - 06/12/26(火) 11:03 -

引用なし
パスワード
   >ちなみに、全角の記号をはじくことは出来ません。
>その場合、正規表現を使って、半角カタカナ、全角ひらがな、全角カタカナ、漢字
>の組合せというふうにすることになるでしょう。
適当にやってみた。関数名はりんさんと同じにしました。

Public Function HKGet(ByVal Target As String) As String
  With CreateObject("VBScript.RegExp")
    .Pattern = "[^ぁ-んァ-ヶヲ-゚一-龠]*"
    .Global = True
    HKGet = .Replace(Target, "")
  End With
End Function

【45488】Re:数値と記号以外の抜き出し方法
お礼  質問(煮詰まった)  - 06/12/27(水) 9:45 -

引用なし
パスワード
   ありがとうございました。
うまく行きました。

【45489】Re:数値と記号以外の抜き出し方法
お礼  質問(煮詰まった)  - 06/12/27(水) 9:46 -

引用なし
パスワード
   色々参考になりました。
助かりました。

【45490】Re:数値と記号以外の抜き出し方法
発言  Blue  - 06/12/27(水) 10:04 -

引用なし
パスワード
   私のは無視でしょうか?
質問しておいてそれはないような。。。

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