Excel VBA質問箱 IV

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

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


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

【79833】複数条件での最大日付取得 tsujio 18/4/26(木) 7:14 質問[未読]

【79845】Re:複数条件での最大日付取得 tsujio 18/4/29(日) 6:13 お礼[未読]
【79846】Re:複数条件での最大日付取得 マナ 18/4/29(日) 7:48 発言[未読]
【79847】Re:複数条件での最大日付取得 tsujio 18/4/29(日) 8:44 お礼[未読]
【79848】Re:複数条件での最大日付取得 マナ 18/4/29(日) 10:31 発言[未読]
【79857】Re:複数条件での最大日付取得 tsujio 18/5/1(火) 8:04 お礼[未読]

【79845】Re:複数条件での最大日付取得
お礼  tsujio  - 18/4/29(日) 6:13 -

引用なし
パスワード
   ▼マナ さん:
>▼tsujio さん:
>
>これでよかったです。
>
>=IF(C2="","",IF(D2="",$C$1,IF(E2="",$D$1,$E$1)))

ありがとうございます。

なるほどそう考えれば良かったですね。
ややこしくしていました。

ステータス列は75列×顧客数400ですので、頂いたロジックをループで回します。

助かりました。

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

【79846】Re:複数条件での最大日付取得
発言  マナ  - 18/4/29(日) 7:48 -

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

>ステータス列は75列×顧客数400ですので

こんな感じでできませんか

=IF(C2="","",INDEX($C$1:$BY$1,1,COUNT(C2:BY2)))

関数は得意ではないので、もっとよい案があるかもしれません。
一般操作の掲示板で質問したほうがよかったと思います。

【79847】Re:複数条件での最大日付取得
お礼  tsujio  - 18/4/29(日) 8:44 -

引用なし
パスワード
   ▼マナ さん:
>▼tsujio さん:
>
>>ステータス列は75列×顧客数400ですので
>
>こんな感じでできませんか
>
>=IF(C2="","",INDEX($C$1:$BY$1,1,COUNT(C2:BY2)))


引き続きありがとうございます。
さきほど【79840】でご教示いただいた方法をマクロに置き換え思ったとおりの結果を得ることができました。

ありがとうございます。


>関数は得意ではないので、もっとよい案があるかもしれません。
>一般操作の掲示板で質問したほうがよかったと思います。

関数でシンプルに処理できる場合とVBAのほうが効率的な場合の切り分けがまだよくわかっていないですね。

もう少し勉強します。

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

【79848】Re:複数条件での最大日付取得
発言  マナ  - 18/4/29(日) 10:31 -

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

>さきほど【79840】でご教示いただいた方法をマクロに置き換え思ったとおりの結果を得ることができました。

こんな考え方でもよいかも。

Option Explicit

Sub test()
  Dim i As Long
  Dim 最終列 As Long
  
  For i = 2 To 4
    最終列 = Cells(i, Columns.Count).End(xlToLeft).Column
    If 最終列 >= 3 Then
      MsgBox Cells(1, 最終列).Value
    End If
  Next
    
End Sub

【79857】Re:複数条件での最大日付取得
お礼  tsujio E-MAIL  - 18/5/1(火) 8:04 -

引用なし
パスワード
   ▼マナ さん:
なるほど、1つずつセルを見ていくよりもそのほうが合理的な気がしますね。

処理速度も多少速くなるような。

ありがとうございます。

>▼tsujio さん:
>
>>さきほど【79840】でご教示いただいた方法をマクロに置き換え思ったとおりの結果を得ることができました。
>
>こんな考え方でもよいかも。
>
>Option Explicit
>
>Sub test()
>  Dim i As Long
>  Dim 最終列 As Long
>  
>  For i = 2 To 4
>    最終列 = Cells(i, Columns.Count).End(xlToLeft).Column
>    If 最終列 >= 3 Then
>      MsgBox Cells(1, 最終列).Value
>    End If
>  Next
>    
>End Sub

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