Excel VBA質問箱 IV

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

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


65 / 13196 ツリー ←次へ | 前へ→

【79946】特定の文字列(6種)の最大値 chou 18/6/3(日) 23:49 質問[未読]

【79957】Re:特定の文字列(6種)の最大値 chou 18/6/5(火) 13:35 質問[未読]
【79958】Re:特定の文字列(6種)の最大値 マナ 18/6/5(火) 19:09 発言[未読]
【79963】Re:特定の文字列(6種)の最大値 chou 18/6/7(木) 10:57 お礼[未読]

【79957】Re:特定の文字列(6種)の最大値
質問  chou  - 18/6/5(火) 13:35 -

引用なし
パスワード
   追加の質問をよろしいでしょうか。
列C、Dの間にもう一列追加となり、
CとD列両方を返したい場合です。
空白だった場合ではなく「0ゼロ」だった場合は、
どのようになりますか?
またc列は文字列が含まれる場合があります。

リストは下記の通りです。
  A   B  C  D  E
01 1回目 あ 123  aaa   150 
02 1回目 い 456  bbb   500
03 1回目 う 123  ccc   400
04 1回目 A 0     0
05 2回目 あ 1M1  ddd   100
06 2回目 A 0     0
省略
13 本番  あ 123 100
14 本番  い 456 200
15 本番  A  0    0

と言った具合のリストになった場合です。

C列とD列の組み合わせでEの合計が一番大きいものを検索。
その行と同じCとD列の値をそれぞれのセルに返す。

上記リストの結果が
  A   B  C  D  E
01 1回目 あ 123  aaa   150 
02 1回目 い 456  bbb   500
03 1回目 う 123  ccc   400
04 1回目 A 456  bbb
05 2回目 あ 1M1  ddd   100
06 2回目 A 1M1  ddd
省略
13 本番  あ 123  aaa 100
14 本番  い 456  bbb 200
15 本番  A  456  bbb

午前中に投稿した通り、C列とD列の組み合わせで合計した結果が同じ場合は、
メッセージボックスで警告。
その時にで来れば、◯回目の数字が同じです。」と出したいです。

追加の質問となり、わかりにくく申し訳ありませんが、ご教示ください。
よろしくお願いいたします。

【79958】Re:特定の文字列(6種)の最大値
発言  マナ  - 18/6/5(火) 19:09 -

引用なし
パスワード
   ▼chou さん:

>追加の質問をよろしいでしょうか。

理解しないまま、追加要望だしても
余計にわからなくなるだけだと思いますよ。

Sub test2()
  Dim tbl As Range
  Dim rng As Range
  Dim constAreas As Areas
  Dim blankAreas As Areas
  Dim r As Range
  Dim k As Long
  Dim c As Range
  
  Columns(5).Insert
  
  Set tbl = Range("A1").CurrentRegion
  tbl.Columns(5).FormulaR1C1 = "=rc[-2]&""_""&rc[-1]"
  
  Set rng = tbl.Columns(6)
  Set constAreas = rng.SpecialCells(xlCellTypeConstants).Areas
  Set blankAreas = rng.SpecialCells(xlCellTypeBlanks).Areas
  
  Set c = Range("Z1") 'どこか離れた場所を作業用に使用(統合先)
 
  For Each r In constAreas
    c.Consolidate r.Offset(, -1).Resize(, 2).Address(, , xlR1C1), xlSum, False, True
    c.CurrentRegion.Sort c.Columns(2), xlDescending
    k = k + 1
    If c.Offset(, 1).Value = c.Offset(1, 1).Value Then
      MsgBox blankAreas(k).Offset(, -5).Value & "の数字が同じです。"
    Else
      blankAreas(k).Offset(, -3).Resize(, 2).Value = Split(c.Value, "_")
    End If
   c.CurrentRegion.ClearContents
  Next
  
  Columns(5).Delete

End Sub

【79963】Re:特定の文字列(6種)の最大値
お礼  chou  - 18/6/7(木) 10:57 -

引用なし
パスワード
   マナ様

ありがとうございます。
いくつか使ったことのなかったものがあったので、
調べてみようと思っての発言でした。
失礼いたしました。

まだ勉強中なので、やりたいことにどんな方法があるか、
もっと効率的な方法があるかなども含め、
前回と今回を比較して見たりもしたかったので。。

回答ありがとうございました、

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