Excel VBA質問箱 IV

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

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


7022 / 13646 ツリー ←次へ | 前へ→

【41608】置換について しげ 06/8/17(木) 0:08 質問[未読]
【41624】Re:置換について [名前なし] 06/8/17(木) 11:17 発言[未読]
【41635】Re:置換について しげ 06/8/17(木) 23:30 発言[未読]
【41640】Re:置換について [名前なし] 06/8/18(金) 1:45 発言[未読]
【41710】Re:置換について しげ 06/8/21(月) 0:29 発言[未読]
【41711】Re:置換について [名前なし] 06/8/21(月) 1:21 回答[未読]

【41608】置換について
質問  しげ  - 06/8/17(木) 0:08 -

引用なし
パスワード
   こんにちは。
いつも拝見させていただいております。

再び教えて頂きたく投稿させていただきました。
宜しくお願い致します。

シート1に 
A        B          C 
2006年6月   〜    2007年2月
という期間が書いてあり

シート2に
6月 7月 8月・・・・・・3月
とある場合

シート2にある6月は期間内にあるので
2006年のものと判断して、
それから2006年6月と置換できるものなんでしょうか?
7月8月・・・と同じことをして
期間内ではないけど3月は2007年3月と置換したいのですが
できるのでしょうか?

困っているのは
シート1とシート2の月がちがうことなんです。。。
シート2の月は信頼できるデータなのですが
シート1の期間は延長したときに書き直し忘れがあったりで
違うことが多いのです。

【41624】Re:置換について
発言  [名前なし]  - 06/8/17(木) 11:17 -

引用なし
パスワード
   >シート2にある6月は期間内にあるので
>2006年のものと判断して、
>それから2006年6月と置換できるものなんでしょうか?

期間内に無かった場合の例も示されたほうがいいかと思います。
シート1が2006年からで、シート2が2007年からとか、その逆で
シート1が2007年からで、シート2が2006年からというケースは
あるのでしょうか?


>7月8月・・・と同じことをして
>期間内ではないけど3月は2007年3月と置換したいのですが
>できるのでしょうか?

例示の6月が2006年6月に出来れば、それを3月の列までオートフィルでコピー
すればいいかと。


>困っているのは
>シート1とシート2の月がちがうことなんです。。。
>シート2の月は信頼できるデータなのですが
>シート1の期間は延長したときに書き直し忘れがあったりで
>違うことが多いのです。

どういう場合に困るのですか?

【41635】Re:置換について
発言  しげ  - 06/8/17(木) 23:30 -

引用なし
パスワード
   ▼[名前なし] さん:
ご返信ありがとうございます。
伝わりにくく申し訳ありません

>>シート2にある6月は期間内にあるので
>>2006年のものと判断して、
>>それから2006年6月と置換できるものなんでしょうか?
>
>期間内に無かった場合の例も示されたほうがいいかと思います。
>シート1が2006年からで、シート2が2007年からとか、その逆で
>シート1が2007年からで、シート2が2006年からというケースは
>あるのでしょうか?

6月は期間内にあることを確認した上で2006年6月と置換したいのです。
なかった場合は6月のままにしておきます。
シート2はシート1の期間(月のみ)を順に書いているだけなので
異なることはありません。
>
>>7月8月・・・と同じことをして
>>期間内ではないけど3月は2007年3月と置換したいのですが
>>できるのでしょうか?
>
>例示の6月が2006年6月に出来れば、それを3月の列までオートフィルでコピー
>すればいいかと。
できればひとつづつ検証したいのです。
7月は期間内にあると確認した上で2006年7月と置換、
8月も期間内にあると確認後、2006年8月と置換するという風に。。。

>>困っているのは
>>シート1とシート2の月がちがうことなんです。。。
>>シート2の月は信頼できるデータなのですが
>>シート1の期間は延長したときに書き直し忘れがあったりで
>>違うことが多いのです。
>
>どういう場合に困るのですか?

延長した場合
シート1の期間を書き直し忘れると
3月は期間内にないと判断され、
置換が行えないことになってしまいますよね。。

シート1と2は私が数字を変えることはできないのですが
2006年4月から2007年3月までのデータをまとめなければならないので
3月分が判断されないと困るのです。
シート1の期間が違っていると
2007年の3月分と判断するのは難しいのでしょうか。

宜しくお願い致します。

【41640】Re:置換について
発言  [名前なし]  - 06/8/18(金) 1:45 -

引用なし
パスワード
   >できればひとつづつ検証したいのです。
>7月は期間内にあると確認した上で2006年7月と置換、
>8月も期間内にあると確認後、2006年8月と置換するという風に。。。

これは可能でしょう。
ただ、それをいちいち確認しないと問題が発生するケースは、シート1、
シート2がそれぞれどんな状態の時なのでしょうか?


その前に、元々の仕様が矛盾していませんか?
(1)
>期間内ではないけど3月は2007年3月と置換したいのですが
(2)
>6月は期間内にあることを確認した上で2006年6月と置換したいのです。
>なかった場合は6月のままにしておきます。

(1)では期間内ではないものを置換する。(2)では置換しないといっています。
どちらですか?

置換するにしても、

>シート1の期間を書き直し忘れると
>3月は期間内にないと判断され、
>置換が行えないことになってしまいますよね。。
>シート1の期間が違っていると
>2007年の3月分と判断するのは難しいのでしょうか。

ということは、シート1の期間に無かった場合、

1)元々期間に入っていないのか
2)修正していなくて入っていないのか

の区別はどこで判断するのでしょうか?
また、場合分けがあるなら、「この場合は置換する」「この場合は置換しない」
という条件がハッキリしないと無理です。

>シート1の期間は延長したときに書き直し忘れがあったりで
>違うことが多いのです。
>延長した場合
>シート1の期間を書き直し忘れると
>3月は期間内にないと判断され、
>置換が行えないことになってしまいますよね。。

期間が異なる場合、シート1の期間をシート2に合わせる必要は無いのですか?


あと1点聞き忘れたのですが、シート2の月は必ず連続しているのですか?
6月 8月 11月・・・のように飛んでたりはしませんよね?

【41710】Re:置換について
発言  しげ  - 06/8/21(月) 0:29 -

引用なし
パスワード
   ▼[名前なし] さん:
ありがとうございます。

>>できればひとつづつ検証したいのです。
>>7月は期間内にあると確認した上で2006年7月と置換、
>>8月も期間内にあると確認後、2006年8月と置換するという風に。。。
>
>これは可能でしょう。
>ただ、それをいちいち確認しないと問題が発生するケースは、シート1、
>シート2がそれぞれどんな状態の時なのでしょうか?
確認しないと問題が発生するわけではありません。

>
>その前に、元々の仕様が矛盾していませんか?
>(1)
>>期間内ではないけど3月は2007年3月と置換したいのですが
>(2)
>>6月は期間内にあることを確認した上で2006年6月と置換したいのです。
>>なかった場合は6月のままにしておきます。
>
>(1)では期間内ではないものを置換する。(2)では置換しないといっています。
>どちらですか?
いえ、そうしたいのです。。。
延長した場合、期間に入っていなくても
データとしてまとめたい2006年4月から2007年3月に入っているので
置換したいのです。
(2)の場合、シート1の始まりの期間は修正することがないので
そのまま置換しないときもあるということなのです。

>
>置換するにしても、
>
>>シート1の期間を書き直し忘れると
>>3月は期間内にないと判断され、
>>置換が行えないことになってしまいますよね。。
>>シート1の期間が違っていると
>>2007年の3月分と判断するのは難しいのでしょうか。
>
>ということは、シート1の期間に無かった場合、
>
>1)元々期間に入っていないのか
>2)修正していなくて入っていないのか
>
>の区別はどこで判断するのでしょうか?
>また、場合分けがあるなら、「この場合は置換する」「この場合は置換しない」
>という条件がハッキリしないと無理です。

シート1の期間とともに
2006年4月から2007年3月というまとめるための期間で
判断したいのです。

>
>>シート1の期間は延長したときに書き直し忘れがあったりで
>>違うことが多いのです。
>>延長した場合
>>シート1の期間を書き直し忘れると
>>3月は期間内にないと判断され、
>>置換が行えないことになってしまいますよね。。
>
>期間が異なる場合、シート1の期間をシート2に合わせる必要は無いのですか?
はい。シート1の期間を私が書き換える必要はありません。

>
>あと1点聞き忘れたのですが、シート2の月は必ず連続しているのですか?
>6月 8月 11月・・・のように飛んでたりはしませんよね?

はい。月は連続しています。

いろいろすみません。
宜しくお願い致します。

【41711】Re:置換について
回答  [名前なし]  - 06/8/21(月) 1:21 -

引用なし
パスワード
   ▼しげ さん:
>確認しないと問題が発生するわけではありません。
では、確認なんてやめましょう。無駄ですし。

期間以前の月は無視し、期間内・期間以降の月に
年を追加するようにしてあります。

Sub Macro1()
Dim MonthStart As Date, MonthEnd As Date
Dim CellStart As Range, CellEnd As Range
  
  With Worksheets("シート1")
    MonthStart = DateValue(.Range("A1").Text & "1日")
    MonthEnd = DateValue(.Range("C1").Text & "1日")
  End With
  

  With Worksheets("シート2")
    Set CellStart = .Rows(1).Find(What:=Format(MonthStart, "m月"), _
      After:=.Range("A1"), LookAt:=xlWhole)
    If CellStart Is Nothing Then
      Set CellStart = .Range("A1")
    End If
    
    Set CellEnd = .Cells(1, Columns.Count).End(xlToLeft)
    
    With .Range(CellStart, CellEnd)
      .Cells(1).Value = Format(MonthStart, "yyyy年") & CellStart.Text
      .Cells(1).AutoFill Destination:=.Cells
      .EntireColumn.AutoFit
    End With
  End With
  
  Set CellStart = Nothing
  Set CellEnd = Nothing
  
  MsgBox "完了しました。", vbInformation
End Sub

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