『標柱の文字列を数値に変換して最大値を採用する』(よろしくお願いします)
表P1(A1:S24)の中のセル内には?T、?U、?V、・・・?]の文字列があり、それらを?T→1、?U→2、?V→3・・・、?]→10に変換して、その数値の中の最大値をT1に採用したい。
同じく表P2でT2に採用し、どうようにP12、T12まで行って、そのT1〜T12の平均値を求めたい。
< 使用 Excel:Excel2013、使用 OS:Windows11 >
Aは1、Bは2…であれば、
Aの文字コードを取得して、1になるように引き算してあげればよいと思います。
>表はP1からP12まであり
というのは、シートが12個あって、シート名がP1、P2…となっているという事ですか?
(匿名) 2025/11/17(月) 14:59:17
この部分だけです。
=CODE(A1)-64
(メジロ) 2025/11/18(火) 07:03:49
・最大値の算定 JからAまで順次findメソッドで検索。見つかればそれが最大値なのでForを抜ける。 ・置換 それぞれの文字をReplaceメソッドで置換 ということでしょう。 これを、範囲を引数にして最大値を返すプロシージャにしておいて、それを範囲の数だけ繰り返す。
生成AIに指示するような書き方なので、日頃からそうしているのでしょう。 ↑の方針を伝えてコードを書いて貰ったらよいと思います。
(xyz) 2025/11/18(火) 10:52:36
Sub test()
Dim rngAll As Variant
Dim rng As Variant
Dim k As Long
Dim newWs As Worksheet
'全対象範囲(★サンプルにつき対象範囲は修正が必要)
rngAll = Array(Range("Sheet1!A1:B3"), Range("Sheet1!A6:C8"), Range("Sheet2!A1:B3"))
ReDim max値(0 To UBound(rngAll)) '各範囲毎の最大値を要素とする配列
k = -1
For Each rng In rngAll
k = k + 1
max値(k) = task(rng)
Next
'結果の書き出し
Set newWs = Worksheets.Add(After:=Sheets(Worksheets.Count))
newWs.[B1] = "最大値"
newWs.[B2].Resize(UBound(max値) + 1, 1) = Application.Transpose(max値)
newWs.[C1] = "平均値"
newWs.[C2] = Application.Average(max値)
End Sub
Function task(rng As Variant) As Long
Dim k As Long
Dim s As String
Dim tmp As Range
'最大値を求める
For k = Asc("J") To Asc("A") Step -1
s = Chr(k)
Set tmp = rng.Find(s, LookIn:=xlValues, LookAt:=xlPart)
If Not tmp Is Nothing Then
task = k - Asc("A") + 1
Exit For
End If
Next
'文字列の置換
For k = Asc("A") To Asc("J")
s = Chr(k)
rng.Replace s, k - Asc("A") + 1, LookAt:=xlPart, MatchCase:=True
'”大文字小文字の区分は必要”と仮定した。区分不要ならMatchCase:=False
Next
End Function
ヒストグラム云々はそちらで手作業して下さい。
実行したいことだけ書くのではなく、本文に依頼文言をきちんと書いて下さい。 ニックネームでお茶を濁すんじゃなく、相手は人間なんだから節度を持ってやりとりしましょう。 まあ、私の生成AI云々のコメントも五十歩百歩ですがね。(正直、ムッとしたのは確か)
丸投げには賛否含め受け止め方は多岐にわたります。 私見では、質問ポイントを書いてもらったほうが互いに有益な情報交換になると思っています。 必要であれが追加の説明も可能ということです。 # 最近は質問して回答があっても知らんぷりの人が散見されるが、昔はそうでもなかったと思う。 # ひとつひとつの回答を検証してフィードバックする人も多かった印象(言い過ぎかも)。
(xyz) 2025/11/20(木) 21:28:42
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.