ExcelのSplit関数を使ったユーザー関数に関して教えてください。

あるセルのデータをスペースで分割した n番目の文字列を取得したいのですが
うまくいきません。
Function seg(mycell As Range, n As Integer)
Dim cut()
cut() = Split(mycell.Value)
seg = cut(n)
End Function
どこがおかしいのか教えてください。
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2008/10/13 08:08:23
  • 終了:2008/10/13 08:42:35

ベストアンサー

id:taknt No.1

きゃづみぃ回答回数13537ベストアンサー獲得回数11982008/10/13 08:18:59

ポイント70pt

まず 型を指定しないとダメですね。

Dim cut() As String


次にSplitで取得する場合、カッコはいりません。

cut = Split(mycell.Value, " ")

また、配列は 0からセットされますので、n番目の場合、nで取得してしまうと +1されたものになってしまうので、-1しないとダメです。

で とおすと

Function seg(mycell As Range, n As Integer)

Dim cut() As String

cut = Split(mycell.Value, " ")

seg = cut(n-1)

End Function

ほかに厳密的にやるならば、入力チェックなども必要です。

id:zuguimo

ありがとうございました。

型の指定でうまくいきました。

2008/10/13 08:36:38

その他の回答(1件)

id:taknt No.1

きゃづみぃ回答回数13537ベストアンサー獲得回数11982008/10/13 08:18:59ここでベストアンサー

ポイント70pt

まず 型を指定しないとダメですね。

Dim cut() As String


次にSplitで取得する場合、カッコはいりません。

cut = Split(mycell.Value, " ")

また、配列は 0からセットされますので、n番目の場合、nで取得してしまうと +1されたものになってしまうので、-1しないとダメです。

で とおすと

Function seg(mycell As Range, n As Integer)

Dim cut() As String

cut = Split(mycell.Value, " ")

seg = cut(n-1)

End Function

ほかに厳密的にやるならば、入力チェックなども必要です。

id:zuguimo

ありがとうございました。

型の指定でうまくいきました。

2008/10/13 08:36:38
id:snitch No.2

snitch回答回数516ベストアンサー獲得回数92008/10/13 08:20:17

ポイント26pt

n番目の文字列なのであれば

配列は0オリジン(0番目からスタート)ですので

Function seg(mycell As Range, n As Integer) 
Dim cut() As String
cut() = Split(mycell.Value)
seg = cut(n - 1)
End Function

でうまくいきませんか?

id:zuguimo

すみません。n-1に関してはこちらの質問登録時のうっかりミスでした。

やはりcut()の型の指定が重要でした。

ありがとうございました。

2008/10/13 08:39:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません