- ベストアンサー
エクセルについて
A1のセルの中に00,09,00,01,00,09,03という数字がありこの中の同じ数字を一つにまとめたいのですが、どのような関数をつかいますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
回答No.2です。 前回の回答で申し上げました様に、Excelに標準的に備えられている関数の中には、その様な目的に使う事が出来る関数は御座いません。 ですが、VBAのマクロを使用しますと、「ユーザー定義関数」と言って、用途に合わせて新しい関数を自作する事が出来ますので、御質問の目的に合った関数を作ってみるというのも1つの方法です。 但し、ユーザー定義関数を使う事が出来るのは、そのユーザー定義関数用のマクロを設定したファイル内だけであり、別のファイルで同じユーザー定義関数を使うためには、その別のファイルにも、同様のマクロを設定しなければなりませんので、注意して下さい。 まず、Visual Basic Editorのウィンドウを開いて、標準モジュールの画面に次の様なVBAのマクロを記述して下さい。 Function DEDUPLICATE(protostring, delimiter) Dim i As Long Dim monostring Dim newstring As String monostring = Split(protostring, delimiter) newstring = monostring(0) If UBound(monostring) = 0 Then GoTo Label For i = 1 To UBound(monostring) If InStr(newstring, monostring(i)) = 0 Then newstring = newstring & delimiter & monostring(i) Next i Label: DEDUPLICATE = newstring End Function その上で、「00,09,00,01,00,09,03」の中の同じ数字を一つにまとめた結果を表示させるセルに、次の様な関数(ユーザー定義関数)を入力して下さい。 =DEDUPLICATE("00,09,00,01,00,09,03",",") 尚、例えばA1セルに「00,09,00,01,00,09,03」と入力されている場合には、 =DEDUPLICATE(A1,",") となります。 又、例えば「00/09/00/01/00/09/03」の様に、「,」ではなく「/」で区切られている場合には、 =DEDUPLICATE("00/09/00/01/00/09/03","/") となります。 尚、もしもVisual Basic Editorの標準モジュールの開き方を御存じではない場合には、下記のURLのページを参考にして下さい。 【参考URL】 PCサポート aim > ユーザー定義関数 http://www.konomiti.com/vbaTop.html http://www.konomiti.com/Ex_kan_05.html 右脳算数・数学 > VB入門 > 専門用語なしの vba マクロ 入門 2013 2010 2007 対応講義 第1部 > 第1話 開発タブを表示させよう http://www5b.biglobe.ne.jp/~suugaku/vbakougi/new1/dai1koudai1wa.html
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
その様な目的を関数だけで達する事は出来ませんので、次の様な方法は如何でしょうか? 今仮に、Sheet1のA1セルに「00,09,00,01,00,09,03」という文字列が入力されていて、B1セルにまとめた結果を表示させるものとします。 又、Sheet2の1行目の行を作業行として使用するものとします。 まず、Sheet2のA1セルに次の様な関数を入力して下さい。 =IF(Sheet1!$A1="","",","&Sheet1!$A1) 次に、Sheet2のB1セルに次の様な関数を入力して下さい。 =IF(COLUMNS($B:B)<LEN(A1)-LEN(SUBSTITUTE(A1,",",)),LEFT(A1,FIND("■",SUBSTITUTE(A1&",",",","■",COLUMNS($B:B)+1))-1)&SUBSTITUTE(REPLACE(A1,1,FIND("■",SUBSTITUTE(A1,",","■",COLUMNS($B:B)+1))-1,),","&REPLACE(LEFT(A1,FIND("■",SUBSTITUTE(A1&",",",","■",COLUMNS($B:B)+1))-1),1,FIND("■",SUBSTITUTE(A1,",","■",COLUMNS($B:B))),),),"") 次に、Sheet2のB1セルをコピーして、Sheet2の1行目においてB1セルよりも右側にあるセルに貼り付けて行って下さい。 次に、Sheet1のB1セルに次の様な関数を入力して下さい。 =IF(COUNTIF(Sheet2!1:1,",*?"),REPLACE(INDEX(Sheet2!1:1,MATCH(",",Sheet2!1:1,-1)),1,1,),"") 以上です。
- bunjii
- ベストアンサー率43% (3589/8249)
>どのような関数をつかいますか? 提示の値は文字列ですから「数字を1つにまとめる」と言うのはどのようにしたいのか分かりません。 2桁の7組の数字をカンマで区切っていますのでカンマを除いて14文字の数字としたいのか、先頭の0を除いた11桁の数値にしたいのかの2通りと考えられます。 前者の場合は次の関数式で14文字の数字に置き換えられます。 =SUBSTITUTE(A1,",","") 後者の場合は前者の結果を数値化すれば良いことになり、次の式で良いでしょう。 =VALUE(SUBSTITUTE(A1,",","")) 簡易型 ↓ =SUBSTITUTE(A1,",","")*1 =SUBSTITUTE(A1,",","")+0