[[20110822221559]] 『抜き取り』(dog) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『抜き取り』(dog)
 A列にアルファベット、漢字 ひらがな 数字がランダムにあります。
 A列 B列  C列  D列  E列
 あ    1    あ 月  A
 1     2    い 火  B
 A     ・  ・ ・   ・  
 月    ・  ・ ・   ・
 2
 火
 B
 3
 い
 C
 D
 う
 4
 え
 E
 水
 木
 5
 金
 土
 お
 このようにB列C列D列E列に抜き取りたいです。
 よろしくご指導御願いします。
 Excel2003  WindowsXPです。


 数字というのは半角数字、アルファベットというのは半角アルファべット(大文字、小文字)だね。
ひらがなはわかるけど漢字ってのが、ちょっとつらいかな?特殊記号や外字やカタカナなんかもあるので
これが「漢字」というのは特定不可能。(カタカナは範囲が決まっているので特定はできるけどね)
数字、ひらがな、アルファベット「以外」なら判定できるけど。

 で、これを関数で?

 (ぶらっと)

 B1:=INDEX($A$1:$A$1000,SMALL(IF($A$1:$A$1000<=10^10,ROW($A$1:$A$1000),""),ROW(A1)))&""
 C1:=IF(SUMPRODUCT(($A$1:$A$1000>="あ")*($A$1:$A$1000<="ん"))<ROW(B1),"",INDEX($A$1:$A$1000,SMALL(IF(($A$1:$A$1000>="あ")*($A$1:$A$1000<="ん"),ROW($A$1:$A$1000),""),ROW(B1))))
 D1:=IF(SUMPRODUCT(($A$1:$A$1000>"ん")*1)<ROW(D1),"",INDEX($A$1:$A$1000,SMALL(IF($A$1:$A$1000>"ん",ROW($A$1:$A$1000),""),ROW(D1))))
 E1:=IF(SUMPRODUCT(($A$1:$A$1000>="A")*($A$1:$A$1000<="Z"))<ROW(E1),"",INDEX($A$1:$A$1000,SMALL(IF(($A$1:$A$1000>="A")*($A$1:$A$1000<="Z"),ROW($A$1:$A$1000),""),ROW(D1))))
 すべての式は配列数式なので [Ctrl]+[Shift]+[Enter]で確定 式の前後に [ ]が付きます。
 下へコピー            (NB)

 よこから失礼。
ひらがなのコード体系としては、最も小さいものは "あ" ではなく "ぁ" 。
なので、NBさんの式の "あ" を "ぁ" に変えるといいかも。

 (ぶらっと)

 で、質問者さんのリクワィアメントは、おそらく関数なんだろうけど、VBAでも、そんなに長くならないので。

 Sub Sample()
    Dim c As Range
    Dim myVal As Variant
    Dim i As Long, j As Long
    Dim cntH As Long, cntA As Long, cntN As Long, cntK As Long

    Columns("B:E").ClearContents
    For Each c In Range("A1", Range("A" & Rows.Count).End(xlUp))
        myVal = c.Value
        Select Case myVal
            Case "ぁ" To "ん"
                cntH = cntH + 1
                i = cntH
                j = 3
            Case "A" To "Z"
                cntA = cntA + 1
                i = cntA
                j = 5
            Case 0 To 9
                cntN = cntN + 1
                i = cntN
                j = 2
            Case Else   'その他は全て漢字列に。
                cntK = cntK + 1
                i = cntK
                j = 4
        End Select
        Cells(i, j).Value = c.Value
    Next

 End Sub

 (ぶらっと)

 NBさん回答ありがとうございます。
 解決しました。
 ぶらっとさんのVBAでも解決しました。
 ぶらっとさん NBさん有難うございました。
 (dog)
 

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.