[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『抜き取り』(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.