プロが教えるわが家の防犯対策術!

エクセルでマクロを作成しています。
E列のセルが次の様に入力されています。

E3=70

E4=16(改行されている)
   1.5

E5=20(改行されている)
   29

E6=31

それぞれのセルの最大値を取得したいのですが、なかなかうまくいきません。
配列に入れてしまうと、配列内の最大値70が返ってきてしまいます。

E3最大値=70
E4最大値=16
E5最大値=29
E6最大値=31

とそれぞれのセルの最大値を求めるテクニックをお持ちの方、教えてください。
よろしくお願いいたします。

「【教えてください】エクセルのセル内で改行」の質問画像

A 回答 (3件)

こんにちは!



>それぞれのセルの最大値を取得したいのですが・・・

仮に1セル内に 20 と 29 が改行して入力されている場合は 29 を返したい!
というコトでしょうか?

VBAになりますが一例です。
各行のE列の最大値をH列・F列の最大値をI列・G列の最大値をJ列に表示するとします。

Sub Sample1()
Dim i As Long, j As Long, k As Long
Dim myAry As Variant, myMax As Variant
For i = 3 To Cells(Rows.Count, "E").End(xlUp).Row
For j = 5 To 7 '←E列~G列まで
myAry = Split(Cells(i, j), vbLf)
For k = 0 To UBound(myAry)
myMax = WorksheetFunction.Max(myMax, myAry(k))
Next k
Cells(i, j + 3) = myMax
myMax = 0
Next j
Next i
End Sub

※ 的外れならごめんなさいね。m(_ _)m
    • good
    • 1
この回答へのお礼

助かりました

tom04さま。
ご回答ありがとうございました。

今は、外出中の為、戻りましたら、確認したいと思います。
今後ともよろしくお願いいたします。

お礼日時:2016/06/09 11:54

ユーザ定義関数なら、こんな感じです。


E3セル内の最大値をH3に表示する場合は、
H3セルに、=MyMax(E3) と入力します。

Function MyMax(r As Range) As Variant
Dim n As Variant
For Each n In Split(r, vbLf)
If MyMax < n Then MyMax = n
Next
End Function
    • good
    • 0
この回答へのお礼

ママチャリさま。
ありがとうございました。
こちらでもできました!!

お礼日時:2016/06/09 22:17

回答ではありません。


なぜこのような表にしてしまったのでしょうか?
E列以降は1つのセルに単独の数値を入れるようにして、D列を必要に応じて結合する形にすればこんな問題は起きないと思います。書式設定などで下図のように出来ます。記入されている内容は気にしないでください。
「【教えてください】エクセルのセル内で改行」の回答画像1
    • good
    • 0
この回答へのお礼

GooUserラックさま。
回答ありがとうございました。
この様な表になってしまったのは、ネットからスクレイピングをした結果です。
説明不足で申し訳ございませんでした。

お礼日時:2016/06/09 11:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!