dポイントプレゼントキャンペーン実施中!

すみません。
先程、エクセルVBAについて質問させて頂いたものです。
画像がうまく送れなかったので再度質問します。
簡単にいうと先程の右ファイルのC列のX12345-48とB列のB00.CR0を組み合わせた後
左ファイルのC列とI列にあるX12345-B00やX12345-CR0までをマッチさせ右ファイルのMの日付けを
左ファイルのL列に転記させるイメ-ジです。
説明が下手ですみません。
条件は先程送ったものも含みます。
よろしくお願いします。

「エクセルVBA」の質問画像

質問者からの補足コメント

  • 右ファイルの画像も補足しました。

    「エクセルVBA」の補足画像1
      補足日時:2022/06/12 00:47
  • 画像追加しました。

    「エクセルVBA」の補足画像2
      補足日時:2022/06/13 21:29

A 回答 (18件中1~10件)

>14行目は空白があればそこで止まるみたいなことにはできないでしょうか?


>どのファイルのものも空白は必ずあります。

対応しました。下記にアップしました。
https://ideone.com/Rz10ts
    • good
    • 0
この回答へのお礼

tatsumaru77様
うまく起動できました。
これで業務もかなりはかどります。
もしかするとイレギュラーな部分が出てくるかもしれないので、その時はまた相談させて下さい。
本当にありがとうございました。

お礼日時:2022/06/13 23:07

>今度は、日不正のエラーが出ます。


>下記は何かおかしいところはないでしょうか?

おかしな日付のセルで停止します。
そのセルがもし、H14なら、H13とH14の関係はH14がH13の次の日
になっていなければなりません。そのようになっていないとこのエラーになります。

日不正のエラー時の
①停止したセルの位置、及びその日付
②停止したセルの左隣の位置、及びその日付
は、どのようになっていますか。
    • good
    • 0
この回答へのお礼

画像を補足で追加しました。
追加した画像をみるとDC列の14行目で日付けは終わっていますが、
DM列の14行目から別の日付けが記入されています。
ちなみにDM列以降も文字等の記載があります。
DD列の14行目以降の日付けや文字を消して実行するとうまくいきます。
このようなところに文字があるとは分かりませんでした。
14行目は空白があればそこで止まるみたいなことにはできないでしょうか?
どのファイルのものも空白は必ずあります。

お礼日時:2022/06/13 21:42

下記にアップしました。


https://ideone.com/sjVXxW
もし、今後、月の行、日の行、データ開始の行が変わるようでしたら、
Const MONROW As Long = 13 '月の行
Const DAYROW As Long = 14 '日の行
Const DATAROW As Long = 16 'データ開始行
の値を変えてください。そうすれば、変えた行に対応した動作をします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
今度は、日不正のエラーが出ます。
下記は何かおかしいところはないでしょうか?

maxcol = ws.Cells(DAYROW, Columns.Count).End(xlToLeft).Column 'DAYROW行の最終列を求める
'日の連続性チェック
For wcol = 5 To maxcol
If ws.Cells(DAYROW, wcol - 1).Value + 1 <> ws.Cells(DAYROW, wcol).Value Then
ws.Cells(DAYROW, wcol).Select
MsgBox ("日不正")
Exit Sub
End If

お礼日時:2022/06/13 18:56

失礼しました。

No14の件ですが、
データは16行からでしょうか?
に訂正します。
    • good
    • 0
この回答へのお礼

16行目です。
よろしくお願いします。

お礼日時:2022/06/13 18:16

>そのデ-タは、月がD列、13行目、日にちがD列14からとなっています。


>こちらで一度、試してみたいのですが、変更をお願いできないでしょうか?
了解しました。
データは15行からでしょうか?
    • good
    • 0

右側のファイルですが、


添付図のように
10月31日のセルはDV4のセルになってますか。
又、その内容は2022/10/31になっていますか。
ご確認をお願いします。
「エクセルVBA」の回答画像13
    • good
    • 0
この回答へのお礼

そのエラーが出たとき、マクロがとまるはずですが、どの行で止まってますか。→F8で実行していますが、を読み込みました。このファイルを処理しますか?で、はいにすると型が一致しませんとでます。

10月31日のセルはDV4のセルになってますか。
又、その内容は2022/10/31になっていますか。→なっています。
サンプルのデ-タをもらいました。
そのデ-タは、月がD列、13行目、日にちがD列14からとなっています。
こちらで一度、試してみたいのですが、変更をお願いできないでしょうか?

お礼日時:2022/06/13 17:31

>実行したところ型が一致しませんとエラーメッセージがでます。


>前のコードでは出なかったのですが。

そのエラーが出たとき、マクロがとまるはずですが、どの行で止まってますか。
    • good
    • 0

下記にアップしました。


https://ideone.com/g54JVn
7月、8月、9月、・・・と何か月続いても、対応できるようにしました。
4行のシリアル日付をそのまま、外注別手配分のL列へセットします。
    • good
    • 0
この回答へのお礼

コ-ドありがとうございます。
実行したところ型が一致しませんとエラーメッセージがでます。
前のコードでは出なかったのですが。

お礼日時:2022/06/13 12:42

>もう一つお願いなのですが、右ファイルの日付けはその月だけではなく


>右に行けば8月、9月、10月と続いています。
>Mを8月にするとその月は反映されていませんでした。
>こちらの対応は難しいでしょうか?

うーん。そうなると、根本的にマクロをかえないとだめですね。
右に続くのは、何か月分続くかは決めずに、
4行目のD列から右へ日付の終端まで数か月のシリアル日付が続くという
前提でよいですか。

前提は以下のように変わります。
1.年はマクロ実行時の日付の年を採用しているが、これを中止し、
D4の日付の年を採用する。D4=2022/7/1なので2022年になる。

2.D3の月は、D4の日付の月に一致すること。
D3の7月は、D4の2022/7/1の7に一致すること。
(D4に2022/7/1が設定され、D3に8月と記入されている場合はエラー)

3.外注別手配分のL列の日付について
現在は、YYYY、MM,DDからシリアル日付を作成し、L列に設定している。
YYYY:マクロ実行時の日付の年
MM:D3の月
DD:Mが記入されている日(1~31の)
これを以下のように変更する。
外注別手配分のL列の日付は、Mが記入してある4行目のシリアル日付を設定する。
従って、右側のファイルに
12月、1月、2月、3月
のように年またがりをおこす月が並んでいても、その月に該当する日付(年月日)を正しく設定できます。

上記のようになりますが、よろしいでしょうか。
    • good
    • 0

下記にアップしました。


https://ideone.com/auuT4g
    • good
    • 0
この回答へのお礼

ありがとうございます。
思った通りにできました。
素晴らしいです。
もう一つお願いなのですが、右ファイルの日付けはその月だけではなく
右に行けば8月、9月、10月と続いています。
Mを8月にするとその月は反映されていませんでした。
こちらの対応は難しいでしょうか?
何度も申し訳ありませんが、お願いできないでしょうか?

お礼日時:2022/06/12 21:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!