• ベストアンサー

エクセルで指定されたデータのうち行単位で最大の値をある文字列に置換するには

エクセルの並び替えと置換の質問です。 指定されたデータのうちから、行単位で最大の値をもつセルのデータを、前方に或る文字列を挿入された値に置換するにはどうすればよいのでしょうか。 例えば 3*3の  A B C 1 9 0 2 2 5 5 4 3 0 8 6 というデータを選択して  A B C 1 M9 0 2 2 M5 M5 4 3 0 M8 6 という風に置換したいのです。 (行単位で一番大きい値の先頭にMを挿入する。) 実際には20列*300行以上あるのですが・・・。 どなたか、効率的な方法を教えていただけないでしょうか。(m_ _m)

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

考え方は以下のようになるかと思います 1 1行1列目を最大値とする 2 最大値と1行2列目を比較し、大きい方を最大値とする 3 2を最終列まで繰り返し、1行目の最大値を求める 4 最大値と1行1列目を比較し、同じならば"M"を付加する 5 4を最終列まで繰り返し、1行目終了 6 1~5を最終行まで繰り返す 以上をマクロ化すると '------------------------------------------------------------- Sub test() Dim 行, 列 As Integer Dim 最大値 As Long For 行 = 1 To Range("a1").End(xlDown).Row 最大値 = 0 For 列 = 1 To Range("a1").End(xlToRight).Column If 最大値 < Cells(行, 列).Value Then 最大値 = Cells(行, 列).Value Next 列 For 列 = 1 To Range("a1").End(xlToRight).Column If 最大値 = Cells(行, 列).Value Then Cells(行, 列).Value = "M" & Cells(行, 列).Value Next 列 Next 行 End Sub '------------------------------------------------------------- のようになります エラー処理はしていません 参考になればどうぞ

HeyJudy
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#204879
noname#204879
回答No.2

[回答番号:No.1]に示した式中の OFFSET(Sheet1!$A1,,,,20) は、単に Sheet1!$A1:$T1 でOKでした。(*^_^*) それよりも、[条件付き書式]で「最大の値をもつセル」を着色して明示するのが良さそうな気がしています。

すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.1

Sheet1       Sheet2   A B C D      A  B  C 1 9 0 2     1 M9  0 2 2 5 5 4     2 M5 M5 4 3 0 8 6     3  0 M8 6 4          4 Sheet2!A1: =IF(Sheet1!A1=MAX(OFFSET(Sheet1!$A1,,,,20)),"M"&Sheet1!A1,Sheet1!A1) または Sheet2!A1: =IF(Sheet1!A1="","",IF(Sheet1!A1=MAX(OFFSET(Sheet1!$A1,,,,20)),"M"&Sheet1!A1,Sheet1!A1))

すると、全ての回答が全文表示されます。

関連するQ&A