質問フォームの 1 つに対する回答であるデータがいくつかあります。
質問によっては複数の回答がある場合があります。例:
趣味は何?
- 旅行
- 撮影
- スポーツ
- ダンシング
各回答には独自の番号があります (上記参照)。
つまり、1 は旅行用、2 は撮影用などです。
一部のセルには複数の回答があります。
たとえば、A3 セルには 1、3、4 が含まれます。数字はカンマで区切られます。
別の Excel シートでは、数値ではなく名前 (単語) として表される回答の表を作成しています。単一の回答の場合は、関数 IF で簡単に作成できます。
IF(A1=1,"Traveling",IF(A1=2,"Filming",IF(A1=3,"Sport",IF(A1=4,"Dancing","Error"))))
しかし、複数の回答があると問題が発生します。セル A3 に Traveling(1)、Sport(3)、Dancing(4) の 3 つの回答があることを Excel が理解できるように、数字を区切るにはどうすればよいでしょうか。
答え1
1,3,4
セル内の文字列を使った簡単な解決策は次のとおりですA1次の数式はTravelling,Sport,Dancing
、必要に応じて を返します。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,1,"Travelling"),2,"Filming"),3,"Sport"),4,"Dancing")
注: この方法 (使用) は、SUBSTITUTE
最大 9 回まで繰り返すことができます。ただし、読みにくくなるため、この方法はお勧めしません。
答え2
使ってみる検索などのIF(SEARCH("1",A1),"Traveling")
代わりになど(例)IF(A1=1,"Traveling")
IF(SEARCH("3",A1),"Sport")
答え3
以下を試してくださいユーザー定義関数 (UDF):
Public Function MultiReturns(sIN As String) As String
Dim i As Long
nums = Array("1", "2", "3", "4")
lets = Array("Traveling", "Filming", "Sport", "Dancing")
MultiReturns = ""
If sIN = "" Then Exit Function
ary = Split(Replace(sIN, " ", ""), ",")
For Each a In ary
For i = LBound(nums) To UBound(nums)
If a = nums(i) Then MultiReturns = MultiReturns & "," & lets(i)
Next i
Next a
MultiReturns = Mid(MultiReturns, 2)
End Function
ユーザー定義関数 (UDF) はインストールも使用も非常に簡単です。
- ALT-F11でVBEウィンドウが開きます
- ALT-I ALT-Mで新しいモジュールを開く
- 内容を貼り付けてVBEウィンドウを閉じます
ワークブックを保存すると、UDFも一緒に保存されます。2003以降のバージョンのExcelを使用している場合は、ファイルを次のように保存する必要があります。.xlsmそれよりも.xlsx。
UDF を削除するには:
- 上記のようにVBEウィンドウを開きます
- コードを消去する
- VBEウィンドウを閉じる
Excel から UDF を使用するには:
=MultiReturns(A1)
マクロ全般の詳細については、以下を参照してください。
http://www.mvps.org/dmcritchie/excel/getstarted.htm
そして
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
UDF の詳細については、以下を参照してください。
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
これを機能させるにはマクロを有効にする必要があります。