親子におすすめの新型プラネタリウムとは?

下記のようにA列の1つのセル内に、半角カタカナ漢字がつながって入力されてるデータがあります。これを関数でD列にカタカナ姓、E列にカタカナ名、F列に漢字姓、G列に漢字名と分解して表示させたいのですが、難しくできませんでした。どうかよろしくお願いします。
     A
1 スズキ イチロウ鈴木 一郎
2 ヤマダ タロウ山田 太郎

このQ&Aに関連する最新のQ&A

A 回答 (6件)

関数でと言う事なので、ちょっと作ってみました。



[A列]に入力されている文字が
[半角カナ姓]+[半角スペース]+[半角カナ名]+[全角漢字姓]+[半角スペース]+[全角漢字名]
だと仮定して作っています。

もし、スペースが半角でなくて全角だと少し関数が変わってきます。

それでは

D1に入る関数
=MID(LEFTB(A1,LENB(JIS(A1))-LENB(A1)+1),1,(FIND(" ",LEFTB(A1,LENB(JIS(A1))-LENB(A1)+1),1)-1))

F1に入る関数
=MID(LEFTB(A1,LENB(JIS(A1))-LENB(A1)+1),FIND(" ",LEFTB(A1,LENB(JIS(A1))-LENB(A1)+1),1)+1,99)

G1に入る関数
=MID(RIGHTB(A1,LENB(A1)-((LENB(JIS(A1))-LENB(A1))+1)),1,FIND(" ",RIGHTB(A1,LENB(A1)-((LENB(JIS(A1))-LENB(A1))+1)),1)-1)

H1に入る関数
=MID(RIGHTB(A1,LENB(A1)-((LENB(JIS(A1))-LENB(A1))+1)),FIND(" ",RIGHTB(A1,LENB(A1)-((LENB(JIS(A1))-LENB(A1))+1)),1)+1,99)

これで1行目から下へコピーでOKなはずです。
内容としては半角カナを全角カナに変換して、その文字バイト数の差を使ってカナと漢字に分割。あとは半角スペースの位置を割り出して姓名に分割。といった感じです。
    • good
    • 0
この回答へのお礼

私の情報掲載不足でしたが、漢字名の間のスペースは全角でした。ためしにカタカナの方でしてみたのですが姓は満点、名はところどころ最後の1文字が不足という状況でした。たくさんの方に親切にしていただき感激です。私ももっと使えるように調べて行きたいと思います。

お礼日時:2009/04/05 17:41

度々すいません。

No.4です。

F1に入る関数とG1に入る関数で誤記入をしてしまいました。
A12となっている所ですが、正しくはA1です。
訂正をお願い致します。
    • good
    • 0
この回答へのお礼

ご指摘の通り濁点のないものやD列G列は100パーセントです。E列F列は1度目に作っていただいたものが精度が高かったようです。文字数の数え方が少しずつわかってきました。難しいのですね。ゆっくり理解していきたいと思います。

お礼日時:2009/04/05 23:05

No.4です。



ごめんなさい。

半角カナから全角カナに変換する際に濁点の数が含まれなくなってしまうようで誤差がでてしまったようです。ちょこっと内容を変更しました。
また、漢字苗字の間のスペースは全角との事で、こちらもちょこっと変更しました。

試して頂けると幸いです。

D1に入る関数
=MID(LEFTB(A1,(LENB(JIS(A1))+LENB(A1)-LENB(SUBSTITUTE(A1,"゛",""))*2)),1,(FIND(" ",LEFTB(A1,(LENB(JIS(A1))+LENB(A1)-LENB(SUBSTITUTE(A1,"゛",""))*2)),1)-1))

E1に入る関数
=MID(LEFTB(A1,(LENB(JIS(A1))+LENB(A1)-LENB(SUBSTITUTE(A1,"゛",""))*2)),FIND(" ",LEFTB(A1,(LENB(JIS(A1))+LENB(A1)-LENB(SUBSTITUTE(A1,"゛",""))*2)),1)+1,99)

F1に入る関数
=MID(RIGHTB(A1,(LENB(SUBSTITUTE(A12,"゛",""))*2-LENB(JIS(A1)))),1,FIND(" ",RIGHTB(A1,(LENB(SUBSTITUTE(A12,"゛",""))*2-LENB(JIS(A1)))),1)-1)

G1に入る関数
==MID(RIGHTB(A1,(LENB(SUBSTITUTE(A12,"゛",""))*2-LENB(JIS(A1)))),FIND(" ",RIGHTB(A1,(LENB(SUBSTITUTE(A12,"゛",""))*2-LENB(JIS(A1)))),1)+1,99)
    • good
    • 0

え~ 暇だったのでやってみましたが


関数でやるのは 大変
(1)A列が 一度 [書式]→[ふりがな]で 編集
前のカタカナと漢字の振り仮名が一致していることが 条件

カタカナ名が 苦労しました

D1は
=LEFT(A1,FIND(" ",JIS(A1),1)-1)
E1は
=MID(SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),FIND(" ",SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),1)+1,FIND(" ",SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),FIND(" ",SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),1)+1)-(FIND(" ",SUBSTITUTE(PHONETIC(A1),LEFT(A1,FIND(" ",JIS(A1),1)-1),""),1)+1))
F1は
=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,D1,""),E1,""),G1,""))
G1は
=RIGHT(JIS(A1),LEN(JIS(A1))-(FIND(" ",JIS(A1),FIND(" ",JIS(A1),1)+1)))
ただし 入力順は D1→G1→E1→F1でお願いします

※検証していないので 試して間違っていたら ごめんなさい
    • good
    • 0
この回答へのお礼

お手数をおかけしました。わざわざ作っていただき感謝しております。振り仮名が使えると良かったのですが、一致していないデータを修正するには件数が多すぎて残念です。こんなに関数を組み合わせることは私の力量では思いつきませんでした。皆さんのようにできるようがんばってっみます。

お礼日時:2009/04/05 14:59

》 カタカナと漢字の間にスペースがない所があるのでこれだとできませんね。



と[回答番号:No.1]にありますが、この部分だけの対処法を提案しておきます。

添付図を参照ください。(姓名が、鈴木 一郎、山田 太郎、梅宮 アンナ、東 ちづる、泉 ピン子、の場合)

B1: {=LEFT(A1,MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>"ん",0)-1)}
  ただし、上式は配列数式です。
C1: =SUBSTITUTE(A1,B1,"")

ただし、姓名の部分が次の場合には当該手法は適用できません。
ビート たけし、はしの えみ、ラモス 瑠偉、あおい 輝彦、オノ ヨーコ
「エクセル、関数でセル内の半角カタカナ漢字」の回答画像2
    • good
    • 0
この回答へのお礼

この方法でうまくいかないかといろいろ試していました。すぐに理解できる技術がないので、これから活用できるようがんばってみます。

お礼日時:2009/04/05 17:45

「スズキ イチロウ 鈴木 一郎」と分割する語句がスペースで区切られていれば


A1セルの内容をD1にコピーし、D1セルを選択してメニューのデータ(D)-区切り位置(E)-「カンマやタブなどの~」にチェック→「スペース」と「連続した区切り文字は~」にチェックして「完了」で分割できます。
ただ「スズキ イチロウ鈴木 一郎」とカタカナと漢字の間にスペースがない所があるのでこれだとできませんね。
    • good
    • 0
この回答へのお礼

おっしゃる通り、カタカナと漢字の間だけはスペースがありません、それからできるだけ関数で処理をしたかったのです。「連続した区切り文字は~」の件、大変勉強になりました。別件で使う機会が多そうです。有難うございました。

お礼日時:2009/04/05 10:31

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelでカタカナ・ひらがな・英数字の抽出

Excelでデータの中から文字種類別にデータを抽出す方法を教えてほしいです。

(例)
   A    B                 C
1  番号  書名               著作名
2  1    ソロモンの偽証 第1部   宮部みゆき
3  2    悪の教典            貴志祐介
4  3    犯罪               フェルディナント・フォン・シーラッハ/酒寄進一
5  4    忘れられた花園        ケイト・モートン/青木純子
6  5    LOVELESS(ラブレス)    桜木紫乃
7  6    Harry Potter          Rowling, J. K.

例えば、上のデータからCの列の中からカタカナ(全角/半角)を探し出し方法はありますか?
データ(フェルディナント・フォン・シーラッハ、ケイト・モートン)だけ抜き出すのではなく
どこのセルにデータがあるのか分かるようにしたいです。

   A    B                 C
4  3    犯罪               フェルディナント・フォン・シーラッハ/酒寄進一
5  4    忘れられた花園        ケイト・モートン/青木純子

のように表示できるようになるのが理想ですが
C4、C5など、データの入っているセルが分かるようになればいいです。

カタカナだけでなく、英語・ひらがな(カタカナ・アルファベットがないもの)でも同様に探せるようにしたいです。
カタカナや英語は全角・半角入り混じっています。
一つセルに全角半角が混在している場合もあります。
B6のようにカタカナや英語が混じっているセルや
C4、C5のようにカタカナと漢字(ひらがな)が混じっているセルもあります。
関数は簡単なのは分かりますが、マクロはさっぱりです。
コードや関数を解説つきで提示していただけると幸いです。

Excelでデータの中から文字種類別にデータを抽出す方法を教えてほしいです。

(例)
   A    B                 C
1  番号  書名               著作名
2  1    ソロモンの偽証 第1部   宮部みゆき
3  2    悪の教典            貴志祐介
4  3    犯罪               フェルディナント・フォン・シーラッハ/酒寄進一
5  4    忘れられた花園        ケイト・モートン/青木純子
6  5...続きを読む

Aベストアンサー

こんばんは!
一例です。

C列セルに全角カタカナ・半角カタカナ・半角アルファベット・全角アルファベットがある場合
その行を非表示のするVBAの一例です。
データは2行目以降にあるとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

尚、行を再表示させる必要があると思いますので、再表示のVBAも一緒に載せておきます。


Sub 対象行非表示() 'この行から
'変数の宣言(i,k,Mは長整数型・strは文字列型)
Dim i As Long, k As Long, M As Long, str As String

'iは2行目からA列の最終行まで(ループ)
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

'kはC列セルの1文字目から最終文字まで(ループ)
For k = 1 To Len(Cells(i, 3))

'C列セルを一文字ずつ変数(str)に置き換える
str = Mid(Cells(i, 3), k, 1)

'もし strが 全角カタカナ・半角カタカナ・半角アルファベット・全角アルファベットの場合は
If str Like "[ア-ン ア-ン A-z A-z]" Then

'Mを一つずつ増やしていく
M = M + 1
End If

'次の文字へ(セル内の最終文字まで)
Next k

'もしMが1以上の場合(全角カタカナ・半角カタカナ・半角及び全角アルファベットがある場合)
If M > 0 Then

'その行を非表示にする
Rows(i).Hidden = True
End If

'Mの値を「0」に!
M = 0

'次の行へ(最終行まで)
Next i
End Sub

Sub 再表示()
Rows.Hidden = False
End Sub 'この行まで

※ コードをコピー&ペーストした場合
>If str Like "[ア-ン ア-ン A-z A-z]" Then
の行の ア-ン が両方とも全角になっているかもしれませんので、
貼り付け後コードを確認してみてください。
もし両方とも全角になっていたら、どちらかの「ア-ン」のカタカナ部を半角にしてください。

※ まず「対象行非表示」のマクロから実行してみてください。

参考になりますかね?m(_ _)m

こんばんは!
一例です。

C列セルに全角カタカナ・半角カタカナ・半角アルファベット・全角アルファベットがある場合
その行を非表示のするVBAの一例です。
データは2行目以降にあるとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

尚、行を再表示させる必要があると思いますので、再表示のVBAも一緒に載せておきます。


Sub 対象行非表示() 'この...続きを読む

Qエクセル・1つのセルに入った漢字(カナ)の分け方

エクセルにお強い方、教えてください><

A1のセルに、
山田 花子(ヤマダ ハナコ)
とあるとします。


私は
B1のセルに
山田 花子
C1のセルに
(ヤマダ ハナコ)
と、分けてデータ化させたいのですが、
どのようにマクロを組めばよいでしょうか?

また、分け終わったC1の(ヤマダ ハナコ)に
置換を使って( )をとって、
カナ を かな に直すため、
PHONETICと書式のふりがな機能を使って直しても
データにエラーは起きずに処理できるでしょうか?


最終的なデータとして
A1セル→山田 花子(やまだ はなこ)
B1セル→山田 花子
C1セル→やまだ はなこ
としたいのです。


ご存知の方いらっしゃいましたら、教えてください。
宜しくお願い致します。

Aベストアンサー

No.3です!
たびたびごめんなさい。
C列がカタカナの場合はひらがなに直さないといけなかったのですね?

もう一度コードを載せておきます。

Sub test()
Dim i As Long
Dim buf As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
buf = WorksheetFunction.Substitute(WorksheetFunction.Substitute _
(Cells(i, 1), "(", "("), ")", ")")
With Cells(i, 2)
.Value = Mid(buf, 1, WorksheetFunction.Find("(", buf) - 1)
.Offset(, 1) = Mid(buf, WorksheetFunction.Find _
("(", buf) + 1, Len(buf) - Len(Cells(i, 2)) - 2)
.Offset(, 2) = StrConv(Cells(i, 3), vbHiragana)
End With
Next i
Columns(3).Delete (xlToLeft)
Columns("A:C").AutoFit
End Sub

こんな感じではどうでしょうか?
何度も失礼しました。m(__)m

No.3です!
たびたびごめんなさい。
C列がカタカナの場合はひらがなに直さないといけなかったのですね?

もう一度コードを載せておきます。

Sub test()
Dim i As Long
Dim buf As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
buf = WorksheetFunction.Substitute(WorksheetFunction.Substitute _
(Cells(i, 1), "(", "("), ")", ")")
With Cells(i, 2)
.Value = Mid(buf, 1, WorksheetFunction.Find("(", buf) - 1)
.Offs...続きを読む

Qエクセルでアルファベットと日本語の文字列を分割する方法

エクセルで各セルに
"Beatlesビートルズ"
"Rolling Stonesローリング・ストーンズ"
のような英語とカタカナ表記がつながっている(間にスペース等ない)文字列を
"Beatles" "ビートルズ"
"Rolling Stones" "ローリング・ストーンズ"
のように分割する方法はありますでしょうか
データが少なければコピペですみますが
何千件になるととてもやってられません
関数もしくはVBAで可能であれば教えてください
データは同じ列に縦に並んでいます

Aベストアンサー

こんばんは。Wendy02です。

#3 のマクロの訂正です。しかし、次のマクロのほうがスピードは速いはずです。

'----------------------------------
 '出力する列は?
 Const OUTPUTCOL As String = "C"
 '----------------------------------
 
 iCol = Columns(OUTPUTCOL).Column  '← 入れ替え
 
 Set rng = Range("A1", Range("A65536").End(xlUp)) '←入れ替え
 Application.ScreenUpdating = False

  ↓
  以下のようになります。

 Set rng = Range("A1", Range("A65536").End(xlUp))
 
 iCol = Columns(OUTPUTCOL).Column - rng.Column
 

'----------------------------------------------------------------
なお、混在した場合のものも作っておきました。
ローリング・ストーンズRolling Stones
Rolling Stonesローリング・ストーンズ
でも、両方とも切り分けるように作りました。
'---------------------------------------------------------------


Sub reSeparateAlphabetKana()
'英語・カタカナ混在の場合に区切るマクロ
Dim rng As Range
Dim c As Range
Dim iCol As Long
 '----------------------------------
 '出力する列は?
 Const OUTPUTCOL As String = "B"
 '---------------------------------
 
 Set rng = Range("A1", Range("A65536").End(xlUp))
 
 iCol = Columns(OUTPUTCOL).Column - rng.Column
 
 Application.ScreenUpdating = False
 
 For Each c In rng
   If VarType(c.Value) = vbString Then
    c.Offset(, iCol).Resize(, 2).Value = reSplit(c.Value)
   End If
 Next c
 Application.ScreenUpdating = True
End Sub
Function reSplit(strText As String) As String()
'英語・カタカナを分離する関数
Dim Matches As Object
Dim Match As Object
Dim buf(1) As String
With CreateObject("VBScript.RegExp")
 .Pattern = "^([A-z ]+|[ぁ-龠 ]+|[\uFF64-\uFF9F ]+|[A-z ]+)"
 '\uFF64-\uFF9F 半角カタカナ 注意:パターンには半角空白が一つ入る
 .Global = False
 '全角空白は紛れ込ませない
 strText = WorksheetFunction.Substitute(strText, " ", " ")
 Set Matches = .Execute(strText)
 If Matches.Count Then
   Set Match = Matches(0)
   buf(0) = Match.Value
   buf(1) = Replace(strText, Match.Value, "")
 End If
 reSplit = buf()
End With
End Function

こんばんは。Wendy02です。

#3 のマクロの訂正です。しかし、次のマクロのほうがスピードは速いはずです。

'----------------------------------
 '出力する列は?
 Const OUTPUTCOL As String = "C"
 '----------------------------------
 
 iCol = Columns(OUTPUTCOL).Column  '← 入れ替え
 
 Set rng = Range("A1", Range("A65536").End(xlUp)) '←入れ替え
 Application.ScreenUpdating = False

  ↓
  以下のようになります。

 Set rng = Range("A1", Range("A65536").E...続きを読む

QExcel2007でカタカナの文字のみを抽出、表示するには?

表題のとおりExcel2007でカタカナの文字のみを抽出し、となりのセルに表示する方法を探しています。

具体的には、

      A列             B列
意識がモウロウとしている。  モウロウ
カミシモを脱いで談笑する。  カミシモ

といった感じで表示させたいのですが、可能でしょうか。
また、同様に半角文字のみをとなりのセルに表示させる方法も探しています。
なるべく早くご教授くだされば幸いです。

Aベストアンサー

たとえば、半角文字を抽出するなら以下のような数式がわかりよいかもしれません。

=MID(A1,MIN(INDEX((MID(A1,ROW($A$1:$A$100),1)=MID(JIS(A1),ROW($A$1:$A$100),1))*100+ROW($A$1:$A$100),)),LENB(JIS(A1))-LENB(A1))

Q文字列から英数字のみを抽出する関数

文字列から英数字のみを抽出する関数を教えていただきたいです。

セルの文字列にはひらがな、カタカナ、数字、アルファベット、記号等を含みます。

色々調べてはみたのですが、数字のみを抽出する関数の説明はたくさんありますが、
アルファベットも含むとなると見つかりませんでした。

数字0~9とアルファベット27個の計37個の文字なので、どうにか関数でできると思うのですが。

具体的には下記のようにしたいのです。

●A列
今日iPhone5をauで購入
最新のNEWSを15時~PCで見る 
Moonshotを生み出す「Google X」

●B列にこう表示したいのです。
iPhone5au
NEWS15PC
MoonshotGoogleX


スペースは残ったままでも結構です。

詳しい方、どうかよろしくお願いいたします。

Aベストアンサー

>数字のみを抽出する関数の説明はたくさんありますが

文字列の中に数字が「一塊だけ」ある場合の説明は多分沢山ありますが、(今回のご質問のように)「文字数字文字数字文字数字」と不定数入り混じってる場合の数式は、全く見つからなかったと思いますよ。

たとえば「英数字が最大限3カタマリまで」といった制約を付けて無理矢理関数をくっつける事は出来なくはありませんが、正直不細工ですし、そもそもあんまり現実的じゃありません。



手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

public function myf(a) as string
 dim i as long
 for i = 1 to len(a)
 if mid(a,i,1) like "[0-9a-zA-Z ]" then
  myf = myf & mid(a,i,1)
 end if
 next i
end function

ファイルメニューから終了してエクセルに戻る

任意のセルに元の言葉を記入し、
=myf(A1)
のように計算する。

>数字のみを抽出する関数の説明はたくさんありますが

文字列の中に数字が「一塊だけ」ある場合の説明は多分沢山ありますが、(今回のご質問のように)「文字数字文字数字文字数字」と不定数入り混じってる場合の数式は、全く見つからなかったと思いますよ。

たとえば「英数字が最大限3カタマリまで」といった制約を付けて無理矢理関数をくっつける事は出来なくはありませんが、正直不細工ですし、そもそもあんまり現実的じゃありません。



手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モ...続きを読む

QEXCELで、セル内の半角カナのみを削除する関数

いつもお世話になっております。
EXCELで、セル内の半角カナのみを削除する関数はございますでしょうか?

    A     B 
1  タナカ田中    田中
2  キノシタ木下   木下
3  オノ小野    小野

といった具合です。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

例えば、

半角カタカナ+全角 というようになっているのでしたら、

=MID(A1,MATCH(TRUE,INDEX(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>256,,),0),255)

このような数式で、削除することが可能です。(ただし、数字やアルファベットも含みます。それを、半角カタカナでくくることも可能ですが、数式が長くなりすぎます。)

しかし、それ以上に、半角カタカナと全角とが混在していたり、英数と混在していて、半角カタカナだけを削除するのは、上記のような数式ではうまくいきません。

その場合は、例えば、以下のようなユーザー定義関数を使うことになります。
'標準モジュール登録

Public Function DOBK(ByVal myStr As String) As String
'DelOneByteKana ->DOBK
Dim Re As Object, Matches As Object, Match As Object
Dim Buf As String
With CreateObject("VBScript.RegExp")
'厳密には、Unicodeの半角カタカナの範囲ですから、JISの\xA1~\xDFとは違っています。
  .Pattern = "[\uFF66-\uFF9F]"
  .Global = True
  Buf = myStr
  If .test(Buf) Then
    Set Matches = .Execute(Buf)
    For Each Match In Matches
      Buf = Replace(Buf, Match, "", , , vbBinaryCompare)
    Next
  End If
End With
  DOBK = Buf
End Function

こんにちは。

例えば、

半角カタカナ+全角 というようになっているのでしたら、

=MID(A1,MATCH(TRUE,INDEX(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>256,,),0),255)

このような数式で、削除することが可能です。(ただし、数字やアルファベットも含みます。それを、半角カタカナでくくることも可能ですが、数式が長くなりすぎます。)

しかし、それ以上に、半角カタカナと全角とが混在していたり、英数と混在していて、半角カタカナだけを削除するのは、上記のような数式ではうまくいきませ...続きを読む

Q全角・半角混在の文字列から半角文字のみ取り出す

エクセル勉強中です。問題集で理解できないところがあります。
数式がどういう意味をもつのか教えて頂けるとありがたいです。
よろしくお願いします。

画像添付の問題になります。
A列に製品名が入っています。(製品番号:半角文字)(製品名:全角文字)
B列に半角文字の製品番号だけを取り出しなさいというものです。
半角文字の開始位置がバラバラになっているところが問題のポイントになっています。

回答ですが
B2:
=MID(A2,MATCH(1,INDEX(LENB(MID(A2,COLUMN(2:2),1))*1,0),),LEN(A2)*2-LENB(A2))
こちらで半角文字のみ取り出せるようです。回答には数式のみで何故この関数を使うのか?
使うことでどういった結果を導くなどの解説が一切ありません。(ちなみに出版会社の便利技的な問題集です)

MID関数で製品名A2から開始位置を指定して、全角半角をLEN関数LENB関数で半角文字数を
算出して文字列を抽出するという事は理解できます。
ただ、この開始位置の指定の所が理解できません。
数式を分割してみましたが
=MID(A2,COLUMN(2:2),1)の所はどの行も製品名の1文字目ですよね・・・
その値にLENB関数で文字数?
数式の検証で見てみると配列のような結果が次々と現れて・・・
MATCH関数もありますしINDEX関数が何か関係しているような気はしているのですが、
INDEX関数と言えば配列に行番号・列番号と例えば表の該当するセルの位置抽出の
知識しかありません。一つのセルでINDEX関数?

すいません。独学で勉強していてこの程度の知識ですが、この数式の考え方教えてくださる方よろしくお願いします。

エクセル勉強中です。問題集で理解できないところがあります。
数式がどういう意味をもつのか教えて頂けるとありがたいです。
よろしくお願いします。

画像添付の問題になります。
A列に製品名が入っています。(製品番号:半角文字)(製品名:全角文字)
B列に半角文字の製品番号だけを取り出しなさいというものです。
半角文字の開始位置がバラバラになっているところが問題のポイントになっています。

回答ですが
B2:
=MID(A2,MATCH(1,INDEX(LENB(MID(A2,COLUMN(2:2),1))*1,0),),LEN(A2)*2-LENB(A2))
こち...続きを読む

Aベストアンサー

ご質問のような半角文字を抽出するなら、提示された数式は一部非効率でわかりにくいところがありますが、個人的には最も簡単な配列数式になっていると思いますので参考までに検証方法を補足します。

まずB2セルに以下の式を入力してください(半角文字が11文字目までに出現する場合)。

=MID(A2,MATCH(1,INDEX(LENB(MID(A2,COLUMN(A:K),1)),0),),LEN(A2)*2-LENB(A2))

COLUMN関数の部分はROW関数で以下のようにするほうが数式がわかりよいかもしれません。

=MID(A2,MATCH(1,INDEX(LENB(MID(A2,ROW($1:$11),1)),0),),LEN(A2)*2-LENB(A2))

この画面上部の数式バーの数式のCOLUMN(A:K)(またはROW($1:$11))の部分をドラッグして選択しF9キーを押すと,「{1,2,3,4,5,6,7,8,9,10,11}」と表示されます(Escで解除)。

次に、MID(A2,COLUMN(A:K),1)の部分を選択し、F9キーを押すと、「{"お","徳","用","M","G","0","5","K","R","カ","ラ"}」とA2セルの先頭から11文字目までの文字が取得できていることがわかります。

次に、LENB(MID(A2,ROW($1:$11),1))の部分を選択し(INDEXを含む部分はこの配列を範囲に変換しているだけですので、この部分を省略するならCtrl+Shift+Enterで確定する必要があります)、F9キーを押すと、「{2,2,2,1,1,1,1,1,1,2,2}」のように、それぞれの文字の半角、全角が1と2で表示されます。

次にMATCH(1,INDEX(LENB(MID(A2,ROW($1:$11),1)),0),)の部分はMATCH関数(第三引数が0または省略)で1(=半角文字)が最初に出現する場所を調べています(上記の例なら4番目)。

ご質問のような半角文字を抽出するなら、提示された数式は一部非効率でわかりにくいところがありますが、個人的には最も簡単な配列数式になっていると思いますので参考までに検証方法を補足します。

まずB2セルに以下の式を入力してください(半角文字が11文字目までに出現する場合)。

=MID(A2,MATCH(1,INDEX(LENB(MID(A2,COLUMN(A:K),1)),0),),LEN(A2)*2-LENB(A2))

COLUMN関数の部分はROW関数で以下のようにするほうが数式がわかりよいかもしれません。

=MID(A2,MATCH(1,INDEX(LENB(MID(A2,ROW($1:$11),1))...続きを読む

Qエクセルで全角と半角を分離する方法って?

エクセル2000で、住所の管理をしているのですが、全角文字と半角文字(丁目、番地等)を分離したいのですが簡単な方法はあるのでしょうか。

セルA1
東京都千代田区千代田1-1-1

これを全角と半角で分離して
セルA1
東京都千代田区千代田
セルB1
1-1-1
というように、1行に並ぶとうれしいのですが
(質問時の見た目は縦に並んでいますが、横に並ばせたい)

Aベストアンサー

B1のセルに次の関数を入れてください。
   =LEFT(A1,-(LENB(A1)-LENB(JIS(A1)))*2)
C1のセルに次の関数を入れてください。
   =RIGHT(A1,LENB(JIS(A1))-LENB(A1))

これで、A1セルの内容が全角と半角に分かれます。
あとは、別のシートにでも「値のみ」で貼り付けましょう。

Qエクセル 同一セル内の数値と文字を分ける関数

セルA1:12カローラ



セルB1:12 C1:カローラ

にしたいのですが可能でしょうか?

よろしくお願い申し上げます。
 

Aベストアンサー

数字の桁とかは規則性はありますか?

規則性があって必ず先頭から二桁が数字なら、
=LEFT(A1,2)
で数字を抜き出し、続いて
=MID(A8,3,LEN(A8)-2)
で文字を抜き取ります。

もしも数字の桁数に規則性がないなら、もう一度
内容を補足して下さい。

Qエクセルで、半角文字列を抽出するには

使用機種はXPでEXCEL2003です。

住所のデータ整理をしています。
地名の後の番地のみ半角数字(ハイフンも半角)で入力されており、その部分だけを別の列に移動させる作業です。

関数で、半角文字列だけを抽出することはできますか?
left関数を使おうとも思いましたが、文字数がバラバラなので、難しいと思いました。

私は、一つひとつコピー→ペーストをするしか思いつかないほどの初心者です。
どうぞよろしくお願いいたします。

Aベストアンサー

当該住所がA1に入っていると仮定して
=RIGHTB(A1,LENB(JIS(A1))-LENB(A1))
でどうでしょう?

住所だけ(番地以外)を抜き出すのは
=LEFT(A1,LEN(A1)-LENB(JIS(A1))+LENB(A1))
です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング