Excel VBA質問箱 IV

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

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


11408 / 13645 ツリー ←次へ | 前へ→

【16278】ランク koshimizu 04/7/23(金) 8:12 質問[未読]
【16280】Re:ランク Asaki 04/7/23(金) 9:03 回答[未読]
【16281】ランク koshimizu 04/7/23(金) 9:50 お礼[未読]

【16278】ランク
質問  koshimizu  - 04/7/23(金) 8:12 -

引用なし
パスワード
   koshimizuと申します。
よろしくお願いします。

下記のようにA列にA,B,C,Dのいずれかが入りB列ににもA,B,C,Dのいずれかが入った
場合にC列には必ず小さい値を返してほしいと言うことで下記のファンクションで
解決しているのですが、A列、B列が共に空白のときは空白で良いのですが、
どちらか片方のみ入力されたら、その値を返してほしいのですが、できません。
お願い致します。

  A B C D 列
1  B C  C
2  A D  D
3  C A  C

Function fncMinRank(strX As String, strY As String) As String
  Dim intX As Integer, intY As Integer
  Dim intMin As Integer
  '対象セルのランクを数値に置き換えます
  intX = fncRankNum(strX)
  intY = fncRankNum(strY)
  '最小値を求めます
  intMin = WorksheetFunction.Min(intX, intY)
  '最小値をランクに戻します
  If intMin = intX Then
    fncMinRank = strX
  ElseIf intMin = intY Then
    fncMinRank = strY
  Else
     fncMinRank = ""
  End If
End Function
=============================
Function fncRankNum(strrank As String) As Integer
  'ランクを数値に置き換えた結果を返します
  Select Case strrank
   Case "A"
    fncRankNum = 26
   Case "B"
    fncRankNum = 25
   Case "C"
    fncRankNum = 24
   Case "D"
    fncRankNum = 23
   Case Else
    fncRankNum = 0
   End Select
End Function

【16280】Re:ランク
回答  Asaki  - 04/7/23(金) 9:03 -

引用なし
パスワード
   こんにちは。

C列に数式を入れておくのではダメなんでしょうか?
C1 =IF(COUNTA(A1:B1)=2,CHAR(MAX(CODE(A1),CODE(B1))),TRIM(A1&B1))
下にコピー

VBAでやるにしても、↑の式と同じ考え方で
A,B列共に入力なら Asc() で文字コードの大きい方を返す
それ以外なら、A列とB列の内容を & でくっつけてしまってそれを返してやればよいような気がします。

【16281】ランク
お礼  koshimizu  - 04/7/23(金) 9:50 -

引用なし
パスワード
   Asaki さん
こんにちは。

>C列に数式を入れておくのではダメなんでしょうか?
>C1 =IF(COUNTA(A1:B1)=2,CHAR(MAX(CODE(A1),CODE(B1))),TRIM(A1&B1))

>VBAでやるにしても、↑の式と同じ考え方で
>A,B列共に入力なら Asc() で文字コードの大きい方を返す
>それ以外なら、A列とB列の内容を & でくっつけてしまってそれを返してやればよいような気がします。

Asaki さん
早速の解答ありがとうございます。
ありがたく保健室にて利用させていただきます。
今後ともよろしくお願い致します

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