Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


68850 / 76734 ←次へ | 前へ→

【12410】再チャレンジ!
質問  つん E-MAIL  - 04/4/2(金) 16:15 -

引用なし
パスワード
   角田 さん、皆さん、こんにちは。

角田さんにせっかくアドバイスを頂いていたのに、
忙しくてしばらく放置しておりました。
やっと余裕が出てきましたので、再チャレンジしております。

アンケート集計自体は、あれから、客先とのやりとりの末、最終的に形ががらりと変わり、ユーザー定義関数など全然必要なくなってしまいました(T_T)
尽力下さった皆様、なんだか申し訳ない・・・でも、高額・・ちゃう!後学の為、もちっと頑張ってみます。

ということで、

>関数1
> 列方向(↓)のセル範囲全体を引数で指定して、その範囲のセル内容を
> 全て連結した文字列を返す。
> Join関数が使えるかと思ったけど、セル範囲/セル範囲をVariant配列
> に入れたもの、どっちでもエラーになるから、自分でループしつつ
> カンマを間に挿入しながら文字列を繋げる。
>
>関数2
> 今の関数セルに記述するもの
> 「関数1」が作った文字列を引数で受け取り、その文字列をSplit関数で
> 配列に分解。
> その配列をFilter関数で「チェック文字」で抽出して、新たな配列を作る。
> その配列の要素数が答え(自分でループして数えても良し)。

一度お返事したときに書きましたように、ちょっと自信がないのですが、
二つ関数を作って、一度に使うということかな?と思い、
考えてみました。

関数1
Function mySub2(arg_r As Range) As String

  Dim r As Range
  Dim strData As String
  
  For Each r In arg_r
    strData = strData & "," & r.Value
  Next r
  
  mySub2 = Mid(strData, 2)

End Function

関数2
Function mySub(argR1 As Range, arg_str As String) As Long

  Dim strR1Value As String
  Dim buf, e1, e2, e3
  Dim lngA As Long

  If argR1.Count > 1 Then
    mySub = 999
    Exit Function
  End If
  
  strR1Value = argR1.Value
  
  e3 = Split(arg_str, ",")
  
  For Each e2 In e3
    If strR1Value = e2 Then
      lngA = lngA + 1
    End If
  Next e2
    
  mySub = lngA

End Function

これで、「=mysub(A5,mysub2(B1:B4))」という形で使ってみました。
結果は、mySub2のセル範囲が狭い場合は、ちゃんと値を返してくれるのですが、実際に使う、430行分になると、どうしてもエラーになってしまいます。
関数の合わせ技がマズイのかな?と思ったのですが、
「mySub2」単独で使った場合でも、ちと問題があるようです。
単独で使った場合、エラーにはなりませんでしたが、それを「値のコピー」をしてみても、コピー先には「数式」の形でしかコピーされませんでした。

うーん、角田さんのアドバイスと私がやってること違うんやろうか?
0 hits

【12115】ユーザー定義関数について つん 04/3/24(水) 12:57 質問
【12119】Re:ユーザー定義関数について Jaka 04/3/24(水) 13:56 発言
【12120】Re:ユーザー定義関数について こうちゃん 04/3/24(水) 14:18 発言
【12124】Re:ユーザー定義関数について つん 04/3/24(水) 14:32 発言
【12138】自動再計算をやめて・・・ つん 04/3/24(水) 19:30 お礼
【12160】Re:ユーザー定義関数について つん 04/3/25(木) 15:07 お礼
【12176】Re:ユーザー定義関数について 角田 04/3/25(木) 18:47 回答
【12187】Re:ユーザー定義関数について つん 04/3/26(金) 9:19 発言
【12410】再チャレンジ! つん 04/4/2(金) 16:15 質問
【12415】Re:再チャレンジ! Jaka 04/4/2(金) 17:17 発言
【12464】やっぱ違ってた。 Jaka 04/4/5(月) 13:04 発言
【12465】え?どこが? つん 04/4/5(月) 13:31 お礼
【12466】忘れてた・・・・ つん 04/4/5(月) 13:44 発言
【12470】Re:忘れてた・・・・ Jaka 04/4/5(月) 16:00 発言
【12416】Re:再チャレンジ! 角田 04/4/2(金) 17:21 回答
【12428】Re:再チャレンジ! ni 04/4/2(金) 21:47 発言
【12474】検証中 つん 04/4/5(月) 16:40 お礼
【12476】Re:検証中 ni 04/4/5(月) 17:34 発言
【12479】ああああ!(>_<) つん 04/4/5(月) 19:11 発言
【12484】出来ました! つん 04/4/6(火) 9:34 お礼
【12467】Re:再チャレンジ! つん 04/4/5(月) 13:47 お礼
【12469】Re:再チャレンジ! 角田 04/4/5(月) 14:46 回答
【12472】Re:再チャレンジ! つん 04/4/5(月) 16:34 お礼

68850 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free