Excel VBA質問箱 IV

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

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


404 / 13645 ツリー ←次へ | 前へ→

【80553】F列の値が指定のとき、E列を変換したい amatsuno 19/3/4(月) 11:45 質問[未読]
【80554】Re:F列の値が指定のとき、E列を変換したい amatsuno 19/3/4(月) 13:24 お礼[未読]
【80556】Re:F列の値が指定のとき、E列を変換したい マナ 19/3/4(月) 20:52 発言[未読]
【80557】Re:F列の値が指定のとき、E列を変換したい amatsuno 19/3/7(木) 10:25 お礼[未読]
【80559】Re:F列の値が指定のとき、E列を変換したい マナ 19/3/7(木) 20:11 発言[未読]

【80553】F列の値が指定のとき、E列を変換したい
質問  amatsuno  - 19/3/4(月) 11:45 -

引用なし
パスワード
   F列を参照し、F列に指定の文字列があったらE列にF列の値を入力したいと思っています

現在、以下のようなカラム構成になっています

AAA1,BBB1,CCC1,DDD1,0:01:01,10:20:30
AAA2,BBB2,CCC2,DDD2,0:02:02,10:20:31
AAA3,BBB3,CCC3,DDD3,0:03:03,10:20:32
AAA4,BBB4,CCC4,DDD4,0:04:04,10:20:33
AAA5,BBB5,CCC5,DDD5,0:05:05,10:20:34
AAA6,BBB6,CCC6,DDD6,0:06:06,23:59:58
AAA7,BBB7,CCC7,DDD7,0:07:07,10:20:30
AAA8,BBB8,CCC8,DDD8,0:08:08,23:59:58
AAA9,BBB9,CCC9,DDD9,0:09:09,10:20:30

このとき、F列が「23:59:58」の行に関しては、E列を「23:59:58」にしたいと思っています
※下記のように、AAA6とAAA8のE列を23:59:58にしたい

AAA1,BBB1,CCC1,DDD1,0:01:01,10:20:30
AAA2,BBB2,CCC2,DDD2,0:02:02,10:20:31
AAA3,BBB3,CCC3,DDD3,0:03:03,10:20:32
AAA4,BBB4,CCC4,DDD4,0:04:04,10:20:33
AAA5,BBB5,CCC5,DDD5,0:05:05,10:20:34
AAA6,BBB6,CCC6,DDD6,23:59:58,23:59:58
AAA7,BBB7,CCC7,DDD7,0:07:07,10:20:30
AAA8,BBB8,CCC8,DDD8,23:59:58,23:59:58
AAA9,BBB9,CCC9,DDD9,0:09:09,10:20:30

下記のコードで書いたのですが、
AAA6のほうだけが変換されてしまいます。
どのように修正すればいいのでしょうか?

Dim C As Long
Dim c2 As Range
'検索語
Const MYTXT As String = "23:59:58"

For C = 1 To Cells(Rows.Count, "F").End(xlUp).Row
Set c2 = ActiveSheet.Columns("F:F").Find(What:=MYTXT, _
LookIn:=xlValues, _
LookAt:=xlPart, _
MatchCase:=False)
If Not c2 Is Nothing Then
c2.Offset(0, -1).Value = "23:59:58"
End If
Next C

【80554】Re:F列の値が指定のとき、E列を変換したい
お礼  amatsuno  - 19/3/4(月) 13:24 -

引用なし
パスワード
   ▼amatsuno さん:
>F列を参照し、F列に指定の文字列があったらE列にF列の値を入力したいと思っています
>
>現在、以下のようなカラム構成になっています
>
>AAA1,BBB1,CCC1,DDD1,0:01:01,10:20:30
>AAA2,BBB2,CCC2,DDD2,0:02:02,10:20:31
>AAA3,BBB3,CCC3,DDD3,0:03:03,10:20:32
>AAA4,BBB4,CCC4,DDD4,0:04:04,10:20:33
>AAA5,BBB5,CCC5,DDD5,0:05:05,10:20:34
>AAA6,BBB6,CCC6,DDD6,0:06:06,23:59:58
>AAA7,BBB7,CCC7,DDD7,0:07:07,10:20:30
>AAA8,BBB8,CCC8,DDD8,0:08:08,23:59:58
>AAA9,BBB9,CCC9,DDD9,0:09:09,10:20:30
>
>このとき、F列が「23:59:58」の行に関しては、E列を「23:59:58」にしたいと思っています
>※下記のように、AAA6とAAA8のE列を23:59:58にしたい
>
>AAA1,BBB1,CCC1,DDD1,0:01:01,10:20:30
>AAA2,BBB2,CCC2,DDD2,0:02:02,10:20:31
>AAA3,BBB3,CCC3,DDD3,0:03:03,10:20:32
>AAA4,BBB4,CCC4,DDD4,0:04:04,10:20:33
>AAA5,BBB5,CCC5,DDD5,0:05:05,10:20:34
>AAA6,BBB6,CCC6,DDD6,23:59:58,23:59:58
>AAA7,BBB7,CCC7,DDD7,0:07:07,10:20:30
>AAA8,BBB8,CCC8,DDD8,23:59:58,23:59:58
>AAA9,BBB9,CCC9,DDD9,0:09:09,10:20:30
>
>下記のコードで書いたのですが、
>AAA6のほうだけが変換されてしまいます。
>どのように修正すればいいのでしょうか?
>
>Dim C As Long
>Dim c2 As Range
>'検索語
>Const MYTXT As String = "23:59:58"
>
>For C = 1 To Cells(Rows.Count, "F").End(xlUp).Row
>Set c2 = ActiveSheet.Columns("F:F").Find(What:=MYTXT, _
>LookIn:=xlValues, _
>LookAt:=xlPart, _
>MatchCase:=False)
>If Not c2 Is Nothing Then
>c2.Offset(0, -1).Value = "23:59:58"
>End If
>Next C


すいません。
解決しました

Dim c2 As Range
'検索語
Const MYTXT As String = "23:59:58"
Dim firstRow As Long
firstRow = 1

Set c2 = ActiveSheet.Columns("F:F").Find(What:=MYTXT, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
If Not c2 Is Nothing Then
  firstRow = c2.Row
  Do
    c2.Offset(0, -1).Value = c2.Value
    Set c2 = ActiveSheet.Columns("F:F").FindNext(c2)
  Loop Until firstRow = c2.Row
End If

【80556】Re:F列の値が指定のとき、E列を変換したい
発言  マナ  - 19/3/4(月) 20:52 -

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

>解決しました

>Set c2 = ActiveSheet.Columns("F:F").Find(What:=MYTXT, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)


この条件に意味ありますか?

LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False


'-------
別法です。

Option Explicit

Sub test()
  Dim r As Range
  
  Set r = Cells(1).CurrentRegion
  
  r.Columns("n").Formula = "=if(TEXT(f1,""hh:mm:ss"")=""23:59:58"",""23:59:58"",e1)"
  r.Columns("e").Value = r.Columns("n").Value
  r.Columns("n").ClearContents
 
End Sub

【80557】Re:F列の値が指定のとき、E列を変換したい
お礼  amatsuno  - 19/3/7(木) 10:25 -

引用なし
パスワード
   ▼マナ さん:
>▼amatsuno さん:
>
>>解決しました
>
>>Set c2 = ActiveSheet.Columns("F:F").Find(What:=MYTXT, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
>
>
>この条件に意味ありますか?
>
>LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False
>
>
>'-------
>別法です。
>
>Option Explicit
>
>Sub test()
>  Dim r As Range
>  
>  Set r = Cells(1).CurrentRegion
>  
>  r.Columns("n").Formula = "=if(TEXT(f1,""hh:mm:ss"")=""23:59:58"",""23:59:58"",e1)"
>  r.Columns("e").Value = r.Columns("n").Value
>  r.Columns("n").ClearContents
> 
>End Sub


ありがとうございます。
この方法でも確認してみます

【80559】Re:F列の値が指定のとき、E列を変換したい
発言  マナ  - 19/3/7(木) 20:11 -

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

>>この条件に意味ありますか?
>>
>>LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False
>>

質問の意味がわかりませんでしたか?

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