advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 37686 for IF (0.008 sec.)
[[20090914095259]]
#score: 1591
@digest: d2f05755ab326d32ed13c69df24d4365
@id: 45391
@mdate: 2009-09-17T04:24:54Z
@size: 36338
@type: text/plain
#keywords: 芝" (83469), 立" (68585), 東芝 (63514), 日立 (61204), 記出 (50976), ト番 (34340), 日予 (25831), 他" (22352), sn (17031), 納入 (15583), 転記 (13944), は転 (11813), ロッ (11319), 定表 (10340), 入先 (10139), range (7753), value (7256), clearcontents (4771), 本日 (4692), ット (4506), 行目 (4311), 。" (4179), 予定 (3737), left (3346), の他 (3328), 確認 (3190), 力が (3004), 目は (2837), 番号 (2812), hana (2486), 記し (2386), 行は (2343)
『別シ-トヘ自動転記』(みこ)
[[20090803103642]] 『別シ-トヘ自動転記』(みこ) お世話になっています。 日立も 日立1棟 日立2棟 あることがわかり 下記のコ-ドに入れたいのですが わからず 下記のコ-ドを利用して 別のボタンを作り動作させています。 合体させるには どのようにすればよいのでしょうか。。 Sub ボタン1_Click() Dim sn, mr As Date Dim i As Long On Error Resume Next If ActiveSheet.Name <> "本日予定表" Then MsgBox "本日予定表シートをアクティブにして 実行して下さい。" Else mr = Range("A" & Rows.Count).End(xlUp).Row If mr < 6 Then MsgBox "データが有りません。" Else For i = 6 To mr sn = Range("I" & i).Value If sn <> "" Then If Left(sn, 2) = "東芝" Then sn = "東芝" End If With Sheets(sn).Range("A" & Rows.Count).End(xlUp).Offset(1) If Err = 0 Then .Range("A1").Value = Range("C4").Value .Range("C1").Value = Range("G" & i).Value .Range("J1").Value = Range("D" & i).Value .Range("I1").Value = Range("L" & i).Value .Range("K1").Value = Range("AC" & i).Value .Range("L1").Value = Range("AD" & i).Value .Range("M1").Value = Range("AE" & i).Value .Range("N1").Value = Range("AF" & i).Value .Range("O1").Value = Range("AG" & i).Value .Range("P1").Value = Range("AH" & i).Value .Range("R1").Value = Range("AI" & i).Value .Range("S1").Value = Range("AJ" & i).Value .Range("T1").Value = Range("AK" & i).Value .Range("U1").Value = Range("AL" & i).Value .Range("V1").Value = Range("AM" & i).Value .Range("W1").Value = Range("AN" & i).Value .Range("X1").Value = Range("AO" & i).Value If sn = "東芝" Then .Range("BB1").Value = Range("I" & i).Value End If Range("D" & i & ":G" & i).ClearContents Range("I" & i).ClearContents Range("L" & i & ":N" & i).ClearContents Range("AJ" & i).ClearContents Range("AC" & i & ":AO" & i).ClearContents Else MsgBox "転記を開始します。" & vbCrLf & _ "一度転記したら変更できません。再度確認してください。" Err = 0 End If End With End If Next End If End If End Sub 新たなボタン(日立用) Sub ボタン2_Click() Dim nn, mr As Date Dim i As Long On Error Resume Next If ActiveSheet.Name <> "本日予定表" Then MsgBox "本日予定表シートをアクティブにして 実行して下さい。" Else mr = Range("A" & Rows.Count).End(xlUp).Row If mr < 6 Then MsgBox "データが有りません。" Else For i = 6 To mr nn = Range("I" & i).Value If nn <> "" Then If Left(nn, 2) = "日立" Then nn = "日立" End If With Sheets(nn).Range("A" & Rows.Count).End(xlUp).Offset(1) If Err = 0 Then .Range("A1").Value = Range("C4").Value .Range("C1").Value = Range("G" & i).Value .Range("J1").Value = Range("D" & i).Value .Range("I1").Value = Range("L" & i).Value .Range("K1").Value = Range("AC" & i).Value .Range("L1").Value = Range("AD" & i).Value .Range("M1").Value = Range("AE" & i).Value .Range("N1").Value = Range("AF" & i).Value .Range("O1").Value = Range("AG" & i).Value .Range("P1").Value = Range("AH" & i).Value .Range("R1").Value = Range("AI" & i).Value .Range("S1").Value = Range("AJ" & i).Value .Range("T1").Value = Range("AK" & i).Value .Range("U1").Value = Range("AL" & i).Value .Range("V1").Value = Range("AM" & i).Value .Range("W1").Value = Range("AN" & i).Value .Range("X1").Value = Range("AO" & i).Value If nn = "日立" Then .Range("BB1").Value = Range("I" & i).Value End If Range("D" & i & ":G" & i).ClearContents Range("I" & i).ClearContents Range("L" & i & ":N" & i).ClearContents Range("AJ" & i).ClearContents Range("AC" & i & ":AO" & i).ClearContents Else MsgBox "転記を開始します。" & vbCrLf & _ "一度転記したら変更できません。再度確認してください。" Err = 0 End If End With End If Next End If End If End Sub 宜しくお願いします。 ---- たとえば If Left(sn, 2) = "東芝" Then sn = "東芝" End IfIf Left(sn, 2) = "東芝" Or Left(sn, 2) = "日立" Then sn = Left(sn, 2) End IfIf sn = "東芝" Then .Range("BB1").Value = Range("I" & i).Value End IfIf sn = "東芝" Or sn = "日立" Then .Range("BB1").Value = Range("I" & i).Value End If に変更してみるのはどうでしょう? それから。。。。 お名前は指摘するつもりはありませんので (タイミング的に、たまたま前の回でお伺いしただけですから。) これまでのものはそのままで もし宜しければ、新たにご質問をなさる時に だんだんと統一をして行って頂ければと思います。 もちろん、過去のものでも統一させた方が良いと 思っておられるのでしたら ご自由になさって頂ければ良いと思いますが。 (HANA) ---- HANAさん ありがとうございます。 Orを使うことで出来たのですね。 私は Andを使ったのですが 駄目でした。 ボタンを2つにしようかなと 思っていました。 If Left(sn, 2) = "東芝←削除 " And Left(sn, 2) = "日立" Then sn = Left(sn, 2) >もし宜しければ、新たにご質問をなさる時に >だんだんと統一をして行って頂ければと思います。 はい、わかりました。 (みこ) ---- >If Left(sn, 2) = "東芝○△◇" And Left(sn, 2) = "日立" Then のコードは実際にやってみたコードですか? それとも ここへ載せるために「こんな感じでやった」 と新たに書かれたコードでしょうか? >Andを使ったのですが >駄目でした。 そうですね。 「東芝」で(且)「日立」のもの ではなく 「東芝」または「日立」のもの ですから And ではなく Or になりますね。 それから、実際に載せられたコードをやっておられた場合。。 Left(sn, 2)は snの文字列の左から二文字分を取り出すので = "東芝○△◇" と5文字と比べるのは変ですよ? (HANA) ---- コードを見ていて思ったのですが シートが無かった場合(を想定して) メッセージボックスが出るようになってますよね? ですが、出るだけで中断出来ませんよね。 そこで If MsgBox(i & "行目は転記出来ません。" & vbCrLf & _ "続けて処理しますか?", vbYesNo) = vbNo Then Exit For End If って感じで、中断出来るようにしてみてはどうでしょう。 それとも「転記を開始します。」って事は 転記処理がされる前にこの部分が走ることになっているのかな。。。? でしたら、コードは修正が必要 って事だと思いますが。 それから mr = Range("A" & Rows.Count).End(xlUp).Row ここで、A列の入力がある最終行まで処理する事になっていますが どうやらA列は転記も削除もされていない様子。 本当に、A列の入力がある最終行までの処理で良いのでしょうか? (HANA) ---- どうして編集してしまうの? 話の流れがおかしくなりますし 私は自分のコメントを消されたいとは思いません。 書き間違えなら、書き間違えだったと 書けばよいだけの話だと思いますが。 (HANA) ---- HANAさん かってに 「←削除」してしまい申し訳ありません。 私のミスによるものです。 その部分「実名」なので 載せたくないもので お許しください。 >↑のコードは実際にやってみたコードですか? 実行してみました。 いけると思い でも動きませんでした。 >と5文字と比べるのは変ですよ? 理解しています。 本来なら Left(sn, 5)ですよね。 >If MsgBox(i & "行目は転記出来ません。" & vbCrLf & _ >"続けて処理しますか?", vbYesNo) = vbNo Then >Exit For >End If 前回では MsgBox i & " 行目は転記出来ません。" & vbLf & _ "I" & i & " セルの値 (" & Range("I" & i).Value & ") を確認して下さい。" を教えていただいたのですが 転記できなく これ以上 忙しいHANAさんを手ずらわしたくなかったもので 私なりに変えて動作したので ま-いいかな なんて思い このようにしました。 >本当に、A列の入力がある最終行までの処理で良いのでしょうか? A列にはC列からのIF関数が入っているので 問題ないとおもいました。 (みこ) ---- >その部分「実名」なので >載せたくないもので >お許しください。 でしたら、○△◇の様に変更すれば良いと思います。 一緒に理由が書いてあれば 「それでも一度書いたものを変更するな」 と言う人は居ないと思いますよ。 >本来なら >Left(sn, 5)ですよね。 どちらを「本来」とするのか分かりませんが 先頭の5文字がどうなっているのか調べるなら そうでしょうね。 >を教えていただいたのですが >転記できなく ちょっと意味が分かりません。 >>MsgBox i & " 行目は転記出来ません。" & vbLf & _ >>"I" & i & " セルの値 (" & Range("I" & i).Value & ") を確認して下さい。" は駄目で >MsgBox "転記を開始します。" & vbCrLf & _ > "一度転記したら変更できません。再度確認してください。" なら良いってこと? メッセージ文の内容の変更だけでは 動きは変わらないと思いますが。。。 >A列にはC列からのIF関数が入っているので >問題ないとおもいました。 「動けばよい」と言う段階から一歩進むとしたら どこまでループするのが良いと思いますか? C列に入力がある行を転記するなら C列の入力がある最終行までループさせるのが 自然だと思いますが。 >A列にはC列からのIF関数が入っているので これだと、数式が事前に入力されている行までループします。 実行前に、A列の数式が入っている最終行数と C列の入力がある最終行数を あわせる訳ではないんですよね? (HANA) ---- HANAさん ありがとうございます。 >○△◇の様に変更すれば良いと思います。 そうですね あわて急いで事を行うと このような結果を招いてしまいました。 ドジなんです 私は。。。 なにぶんにも仕事中にての返事ですので ネットに繋げ すぐにコ-ピして ワ-ドに貼り付けて 返答を打っています。 返答をコピペしています。 私としは HANAさんへ直ぐにでも返事を打ちたいのですが 仕事で遅れる場合があります。 お許しください。 あれ〜どちらも転記できました が >>>MsgBox i & " 行目は転記出来ません。" & vbLf & _ >>>"I" & i & " セルの値 (" & Range("I" & i).Value & ") を確認して下さい。" だと 最初に 8行目は転記出来ません。I8セルの値を確認して下さい。 と表示が出てしまいます。 >これだと、数式が事前に入力されている行までループします。 そうでしたか だったら mr = Range("C" & Rows.Count).End(xlUp).Row に変更しなくてはいけませんね。 運用前でよかったです。 (みこ) ---- >だと >最初に >8行目は転記出来ません。I8セルの値を確認して下さい。 >と表示が出てしまいます。 そしたら、みこさんが載せておられるメッセージにしても 8行目の所でメッセージボックスが表示されると思いますが? (行番号が表示されないので どの行でメッセージが出ているか 分からないだけで。) そして、8行目はやはり転記されていないのではないかと思いますが。。。? (HANA) ---- HANAさん、そして皆さん おはようございます。 明日は、新しい党の総理が決まりますね。 少しで日本が良くなることを期待して。。。 今回作ってうちに 8,9行目は表題にしました。 10行目からの転記になります。 Else mr = Range("C10" & Rows.Count).End(xlUp).Row If mr < 6 Then MsgBox "データが有りません。" Else と End If With Sheets(sn).Range("C10" & Rows.Count).End(xlUp).Offset(1) If Err = 0 Then と 変えてみたのですが「データが有りません」表示で 駄目でした。 If mr < 6 Then For i = 6 To mr こちらの数字も 色々変えてみたのですが 「8行目は転記出来ません。I8セルの値を確認して下さい。」 表示で 駄目でした。 (みこ) ---- >8,9行目は表題にしました。 >10行目からの転記になります。 本日予定表シートのレイアウトが変更になったのですか? Range("C" & Rows.Count) これは、C列のワークシートの最終行 2003迄のエクセルなら ワークシートの最終行は65536行なので C65536セルの事を表します。 そこから、.End(xlUp).Row したセルが C列で入力が有る最終行のセルです。 >If mr < 6 Then 8,9行目が表題なら このセルの行番号・・Range("C" & Rows.Count).End(xlUp).Row・・ が 9 以下の場合(10未満の場合) 転記するデータが無いことになりますよね? >For i = 6 To mr 前回は6行目から転記だったのが 10行目から転記する事にしましたね。 今回の i は nn = Range("I" & i).Value この辺り/‾‾‾‾‾‾‾‾ と直接関係しています。 たぶん6,7行目はI列に入力が無いと思います。 ですから、If nn <> "" Then で処理されません。 i = 8 に成った場合 nn には I8 セルの値が入ります。 そして、I8 セルで指定されているシートに 8行目のデータを転記しようとします。 でも、実際は8行目はタイトル行で その様なシート名は無いのでエラーになります。 よって 転記もされません。 10行目から転記なら、10行目から始まるように すればよいと思いますよ。 それから こちらも基本的には Rows.Count なんで同じですが。。。 >With Sheets(sn).Range("C10" & Rows.Count).End(xlUp).Offset(1) これは Sheets(sn) シートに関する事なので 変更は不要に思いますが。。。? こちら(各転記先シート)もレイアウトの変更が有りましたか? [ステップインで実行]するとコードの動きが確認出来ます。 また、カーソルを近づけてしばらく待つと 何のデータが処理されているのか確認出来ます。 動きがおかしい時は、一つずつ確認していってもらうのが良いと思います。 例えば、今回の場合 6行目の処理から始まります。 その時に「10行目からで良いのに」と思って下さい。 (HANA) ---- >本日予定表シートのレイアウトが変更になったのですか? はい、作っていくうちで変更しました。 For i = 6 To mr ↓ For i = 10 To mr に変えてやれば 検証OK For i = 10 To mr Range("I" & i)の10行目から mr(C65536)まで繰り返しなさいですよね。 >こちら(各転記先シート)もレイアウトの変更が有りましたか? 転記先は、変更なしです。 If mr < 6 Then MsgBox "データが有りません。" もしmr(C65536)が6より小さい場合は メッセ-ジをだしなさい。 Else mr(C65536)が6より大きい場合は、 For i = 10 To mr を実行しなさいですよね。 以前にも HANAさんに教わった >[ステップインで実行]するとコードの動きが確認出来ます。 するのを すぐに忘れてしまいます。 コードの動作確認大切ですよね。 (みこ) ---- みこさん!!びみょ〜ですよ!!(ニドメ・笑) >mr(C65536)まで繰り返しなさいですよね。 >mr(C65536)が6より小さい場合は >mr(C65536)が6より大きい場合は mr は C65536 では無いですが 常識的に考えると C65536セルの状態は関与しない と言う事になると思いますが 大丈夫ですか? 「.End(xlUp).Row」を付け忘れているだけ? それに、データは10行目から入力なんですよね? 6行目ではなくて。 (HANA) ---- .End(xlUp).Rowの意味を教えてください。 (みこ) ---- .End(xlUp).Rowで入力した最終セル行を確認しているんですよね。 (みこ) ---- HANAさん やっと理解できました。 できの悪い人に 教えるのは大変ですね(笑) 転記させる時は、 全ての作業を終えたことを確認して 行います。 転記しなくても良い納入もあるので 「行目は転記出来ません。」 の表示がでたら その行を削除もしくは白紙にする方法って できるのでしょうか? (みこ) ---- >その行を削除もしくは白紙にする方法 出来ますが、間違って入力していた場合は どうするんですか? 例えば、「東し芝」って感じで 間違えて打っていた時 とか。 まぁ、確認して消すようにすれば良いのかもしれませんが。 >転記しなくても良い納入 ってのは、どの様な物がどれくらい有るのでしょう? また、どの様に判断するのでしょう? 因みに、こう言う情報は コードを見直すのが良い場合が有りますよ。 それから、せっかく打ったデータですから もう一枚くらいシートを増やして その他シートを作成しておくのが良いと思いますが。 I列の打ち間違いや、「やっぱり・・・」なんて時に そこからデータをそれぞれのシートへ移動するだけで 済むように成りますから。 (HANA) ---- >間違って入力していた場合は >どうするんですか? 人的ミスを無くすために私が入力して プリントアウトし 本社からのデ-タと照らし合わせ 確認欄に一つずつチェックをして 上司が更に確認して印をもらい 各部署へ配布しています。 >ってのは、どの様な物がどれくらい有るのでしょう? 10箇所の納入先がありまが 日によって違いますが 一日4から7ぐらいです。 >また、どの様に判断するのでしょう? ロット番号がありません。 助言ありがとうございます。 今は、プリントアウトした用紙をファイルとして保存そして 私なりにパソコンに保存しています。 (みこ) ---- 確かに、色々な人の目を通ると 間違いに気づくかもしれませんが こう言う時の人の目って なかなか信用出来ませんからね。 >>その他シートを作成しておくのが良いと思いますが。 どうでしょう? >>また、どの様に判断するのでしょう? >ロット番号がありません。 でしたら、その列の状態も 確認すると良いかもしれませんね。 (HANA) ---- >なかなか信用出来ませんからね。 たしかに100%ノ-ミスはありえませんから 今のところはありませんが 今後ありえます。 >>>その他シートを作成しておくのが良いと思いますが。 たとえば どのように??? ロット番号の確認もしています。 もし、白紙または削除できるものなら I列は入力規則のリストになっているので I列の納入先を空白にしたら その行が白紙または削除できないかとおもいまして。。 (みこ) ---- >I列の納入先を空白にしたら >その行が白紙または削除できないかとおもいまして。。 あれ?急に話しが分からなくなりました。 転記をする段階で I列に入力されているシートにデータを転記するが ロット番号が無い行は転記しない。 (I列に入力が有っても、無くても) って事かと思っていたのですが なんだか違うみたいですね?? (HANA) ---- HANAさん かき乱してすいません。 >I列に入力されているシートにデータを転記するが >ロット番号が無い行は転記しない。 > (I列に入力が有っても、無くても) > って事かと思っていたのですが その通りです。 「行目は転記出来ません。」 の表示がでたら もう一度、メッセ-ジが出て 「削除してもよいですか」 OKを押すと 削除される なんて できれば よいのですが (みこ) ---- MsgBox i & " 行目は転記出来ません。" & vbLf & _ "I" & i & " セルの値 (" & Range("I" & i).Value & ") を確認して下さい。" Selection.Delete Shift:=xlUp こんな風に入れてみましたが 単純すぎますね(笑) (みこ) ---- 因みに、ロット番号は何列なんですか? それから ロット番号に入力が無い状態と I列に入力が無い状態では どちらが優先されるのですか? それとも、等しい関係に有るのでしょうか? ロット番号に入力が無い行は必ずI列にも入力が無い と言った感じで?? >こんな風に入れてみましたが えっと、そんな感じで良いなら上側の方こそ それでよいと思いますが。。。 入力する場所以外には 数式が入力されて居るんじゃないんですか? (HANA) ---- >ロット番号は何列なんですか? AB列に入っています。 >どちらが優先されるのですか? 等しい関係です。 >ロット番号に入力が無い行は必ずI列にも入力が無い >と言った感じで?? そうですが I列に納入先が入っていても ロット番号が表示されない場合あり。 前文より (I列に入力されているシートにデータを転記するが ロット番号が無い行は転記しない。) 関係なかったかな >入力する場所以外には >数式が入力されて居るんじゃないんですか? はい、入っています。 IFが入っています。 削除に関しては、取り入れるつもりでしたので 別表題で HANAさんに 解決していただいています。 でも問題発覚 (みこ) ---- >I列に納入先が入っていても >ロット番号が表示されない場合あり。 って状況が有るのなら >>ロット番号に入力が無い行は必ずI列にも入力が無い と言う状況と相反しますよ? 「その他」シートを一つ作って こんな感じで。 Sub その他へ() Dim sn, mr As Date Dim i As Long On Error Resume Next If ActiveSheet.Name <> "本日予定表" Then MsgBox "本日予定表シートをアクティブにして 実行して下さい。" Else mr = Range("C" & Rows.Count).End(xlUp).Row If mr < 10 Then MsgBox "データが有りません。" Else For i = 10 To mr If Range("C" & i).Value <> "" Then If Range("AB" & i).Value <> "" Then sn = "その他" Else sn = Range("I" & i).Value If Left(sn, 2) = "東芝" Or Left(sn, 2) = "日立" Then sn = Left(sn, 2) End If End If With Sheets(sn).Range("A" & Rows.Count).End(xlUp).Offset(1) If Err = 0 Then .Range("A1").Value = Range("C4").Value .Range("C1").Value = Range("G" & i).Value .Range("J1").Value = Range("D" & i).Value .Range("I1").Value = Range("L" & i).Value .Range("K1").Value = Range("AC" & i).Value .Range("L1").Value = Range("AD" & i).Value .Range("M1").Value = Range("AE" & i).Value .Range("N1").Value = Range("AF" & i).Value .Range("O1").Value = Range("AG" & i).Value .Range("P1").Value = Range("AH" & i).Value .Range("R1").Value = Range("AI" & i).Value .Range("S1").Value = Range("AJ" & i).Value .Range("T1").Value = Range("AK" & i).Value .Range("U1").Value = Range("AL" & i).Value .Range("V1").Value = Range("AM" & i).Value .Range("W1").Value = Range("AN" & i).Value .Range("X1").Value = Range("AO" & i).Value If sn = "東芝" Or sn = "日立" Then .Range("BB1").Value = Range("I" & i).Value End If Range("D" & i & ":G" & i).ClearContents Range("I" & i).ClearContents Range("L" & i & ":N" & i).ClearContents Range("AJ" & i).ClearContents Range("AC" & i & ":AO" & i).ClearContents Else If MsgBox(i & "行目は転記出来ません。" & vbCrLf & _ "続けて処理しますか?", vbYesNo) = vbNo Then Exit For End If Err = 0 End If End With End If Next End If End If End Sub ↑動かして無いので、動くかどうかは分かりません。 (HANA) ---- >>>ロット番号に入力が無い行は必ずI列にも入力が無い と言う状況と相反しますよ? そこが返答しにくかったのですが I列の納入先でロット番号表示と I列の納入先でロット番号非表示(必要ないから) があります。 コ-ドを検証してみました。 その他のシ-トを作り 前のコ-ドを削除して貼り付け ○△◇部分だけ変更しました。 実行させると 「行目は転記出来ません。続けて処理しますか?」 の表示が出てしまいます。 [ステップイン実行]でコードの動きを確認してみました。 Dim sn, mr As Date Dim i As Long > On Error Resume Next > If ActiveSheet.Name <> "本日予定表" Then MsgBox "本日予定表シートをアクティブにして 実行して下さい。" > Else > mr = Range("C" & Rows.Count).End(xlUp).Row > If mr < 10 Then MsgBox "データが有りません。" > Else > For i = 10 To mr > If Range("C" & i).Value <> "" Then >If Range("AB" & i).Value <> "" Then > sn = "その他" Else sn = Range("I" & i).Value If Left(sn, 2) = "東芝" Or Left(sn, 2) = "日立" Then sn = Left(sn, 2) End If > End If > With Sheets(sn).Range("A" & Rows.Count).End(xlUp).Offset(1) > If Err = 0 Then .Range("A1").Value = Range("C4").Value .Range("C1").Value = Range("G" & i).Value .Range("J1").Value = Range("D" & i).Value .Range("I1").Value = Range("L" & i).Value .Range("K1").Value = Range("AC" & i).Value .Range("L1").Value = Range("AD" & i).Value .Range("M1").Value = Range("AE" & i).Value .Range("N1").Value = Range("AF" & i).Value .Range("O1").Value = Range("AG" & i).Value .Range("P1").Value = Range("AH" & i).Value .Range("R1").Value = Range("AI" & i).Value .Range("S1").Value = Range("AJ" & i).Value .Range("T1").Value = Range("AK" & i).Value .Range("U1").Value = Range("AL" & i).Value .Range("V1").Value = Range("AM" & i).Value .Range("W1").Value = Range("AN" & i).Value .Range("X1").Value = Range("AO" & i).Value If sn = "東芝" Or sn = "日立" Then .Range("BB1").Value = Range("I" & i).Value End If Range("D" & i & ":G" & i).ClearContents Range("I" & i).ClearContents Range("L" & i & ":N" & i).ClearContents Range("AJ" & i).ClearContents Range("AC" & i & ":AO" & i).ClearContents >Else If MsgBox(i & "行目は転記出来ません。" & vbCrLf & _ "続けて処理しますか?", vbYesNo) = vbNo Then Exit For End If Err = 0 End If End With End If Next End If End If End Sub (みこ) ---- >○△◇部分だけ変更しました。 がちょっとどうなっているのかよく分かりません。 >[ステップイン実行]でコードの動きを確認してみました。 それで、どうだったんですか? >「行目は転記出来ません。続けて処理しますか?」 何行目が転記出来ないと出るのですか? また、その行の AB列とI列の値はどうなっているのですか? (HANA) ---- >>○△◇部分だけ変更しました。 > がちょっとどうなっているのかよく分かりません。 If Left(sn, 5) = "東芝○△◇" Or Left(sn, 5) = "日立○△◇" Then sn = Left(sn, 5) If sn = "東芝○△◇" Or sn = "日立○△◇" Then に変えています。 >>[ステップイン実行]でコードの動きを確認してみました。 >それで、どうだったんですか? sn = "その他" から 「行目は転記出来ません。続けて処理しますか?」 OKで Else sn = Range("I" & i).Value If Left(sn, 5) = "東芝○△◇" Or Left(sn, 5) = "日立○△◇" Then へ進みます。 >何行目が転記出来ないと出るのですか? 10,11行はロット表示で 12,13,14行はロット非表示なのに 13行目が転記出来ないと出でます。 表示てきには 12行目が転記出来ない 表示があっているのですが。 (みこ) ---- もう一度確認させて下さい。 表示されるメッセージは (複数回表示される場合 一番始めに表示される物) 「13行目が転記出来ない」 ですか? その時、sn の値は何に成っていますか? (HANA) ---- A,C列になにも入れない状態で 実行していました。 私のミスです。 転記しました その他へも転記しました。 (みこ) ---- ん〜〜〜。 A列はどうなっていても関係無いですし C列に入力が無い行は If Range("C" & i).Value <> "" Then で飛ばされるんですけどね。。。 12行目は 飛ばされるから、残ってた って事かな? でも、13行目にメッセージが出るのは変ですね。 13行目は C13,AB13に入力が有って、I13に入力がない って状態だったのかな? まぁ、ステップインで実行すると sn に 何の値が入っているか確認出来ますね? iの値も何に成っているか確認出来ますね? その時に、i行目の状態を見て 本来、sn には何が入っていて欲しいのか。 それが、現在どの様に成っているのか。 では、何故その様に成るのか。 (分岐して欲しい場所へ分岐しない とか 確認しているセルの値がどうも違う様だ とか) と順を追って調べていって下さい。 ステップインで実行したら エクセルが自動でみこさんの思う様なコードに 修正してくれるわけではありません。 一行ずつ エクセルがどの様に動いているのか確認して どこで想定と違う動きをしているのか見つけるために行います。 そして、希望する動きをしてくれない場合は みこさんが、コードを修正していく必要が有ります。 (HANA) ---- 私のミスです。 色々考えていただき 申し訳ありませんでした。 余談 別にファイルを設けて 転記できるかなと 変えてみたけど If Range("AB" & i).Value <> "" Then sn = "C:¥My Documents¥テスト111¥転記" 同じブックでないと 転記しないのですね。 (みこ) ---- >同じブックでないと >転記しないのですね。 それは変更の仕方が違うからですね。 (HANA) ---- 「その他」にデ-タを残すことができました。 ありがとうございます。 転記しない(ロット番号なし) の行の白紙または削除は どのようしたらよいのでしょうか? (みこ) ---- あ、間違えました。 If Range("AB" & i).Value = "" Then sn = "その他" Else として、ロット番号が無い行を その他シートへ転記。 ですね。 でも、<>"" としているコードの動きで良いんですか? If Range("AB" & i).Value <> "" Then sn = "その他" Else だとロット番号が有る行は「その他」シートへ 転記されて仕舞ってるのではないかと思いますが。 (HANA) ---- 検証してみました。 どちらも ロットのない行は とばないです。 この場合だと ロットのある行は指定した場所へ飛びます。 If Range("AB" & i).Value = "" Then sn = "その他" Else この場合だと ロットのある行はその他へ飛びます。 If Range("AB" & i).Value <> "" Then sn = "その他" Else (みこ) ---- >「その他」にデ-タを残すことができました。 >ありがとうございます。 >転記しない(ロット番号なし) >の行の白紙または削除は >どのようしたらよいのでしょうか? この時点での確認が 確認不足でした。 申し訳ありません。 「その他」シ-トしか見ていなくて 転記したもだと思ってしまいました。 (みこ) ---- >この場合だと >ロットのある行は指定した場所へ飛びます。 この状態のコードを使ってもらうと ロットの無い行は「その他」シートへ行きませんか? で、データも削除されると思いますが・・・・。 >If Range("AB" & i).Value = "" Then >sn = "その他" >Else のコードを使ってロットのない行を処理するときは この場所でどこへ分岐しますか? また、snの値はどうなりますか? (HANA) ---- >ロットの無い行は「その他」シートへ行きませんか? 行きません。 ロットのある行は指定した場所へ飛んだ後、 ロットのない行で 「行目は転記出来ません。続けて処理しますか?」 表示が出るだけです。 >snの値は その他です >この場所でどこへ分岐しますか? End If With Sheets(sn).Range("A" & Rows.Count).End(xlUp).Offset(1) へ移行します。 (みこ) ---- 飛ばない訳がわかりました。 AB列にはIF式が入っています。 IF式を削除したら その他へとびました。 (みこ) ---- AB列にはIFは必要なので 転記する時点で ロットのない納入先の I列を空白にして 飛ばすようにしました。 If Range("I" & i).Value = "" Then sn = "その他" これしか 方法がみつかりません。 (みこ) ---- せっかく HANAさんが「その他」へ転記できるようにしてくれたので 納入先も転記したいのですが 式がなく空白判定する欄がない 現状にて 良い知恵はないでしょうか (みこ) ---- えっと、AB列に入っている式を教えて下さい。(汗) (HANA) ---- AB列には、 AB10,AB11,AB12〜 =IF(I10="","",INDEX(Q10:U10,MATCH(IF(LEFT(I10,LEN(Q$8))=Q$8,Q$8,LEFT(I10,FIND(",",I10&",")-1)),Q$8:U$8,0))) =IF(I11="","",INDEX(Q11:U11,MATCH(IF(LEFT(I11,LEN(Q$8))=Q$8,Q$8,LEFT(I11,FIND(",",I11&",")- 1)),Q$8:U$8,0))) =IF(I12="","",INDEX(Q12:U12,MATCH(IF(LEFT(I12,LEN(Q$8))=Q$8,Q$8,LEFT(I12,FIND(",",I12&",")-1)),Q$8:U$8,0))) と入っています。 (みこ) ---- ん〜。 AB列はロット番号なんですよね・・・? サンプルデータを作るのは大変だとは思いますが こちらでシートが作れるだけの情報を 載せてもらえませんか? (HANA) ---- >AB列はロット番号なんですよね・・・? そうです。 HANAさん、現在ロット番号の不具合もあり 転記の件が終了したら お聞きしょうと思っていました。 ロットのスレのほうが サンプルデータが豊富なので 一度 こちらを閉じて ロットのスレを立ち上げても よろしいでしょうか? (みこ) ---- ・Q2:S6が、納入先と対応ロット番号 ・ I列に、納入先 ・Q8:U8に作業列の納入先 =INDEX($Q$2:$Q$6,COLUMN(A2)) ↓ =INDEX($Q$2:$Q$6,COLUMN(E2)) ・Q9:U9に、前回の最後のロット番号を入力 P列 =IF(RIGHT(I10,1)="2","",IF(RIGHT(I10,1)="1",LEFT(I10,FIND(",",I10&",")-1),IF(LEFT(I10,LEN (Q$8))=Q$8,Q$8,I10))) Q列 =IF($P10=Q$8,IF((SUMPRODUCT(($A$10:$A19=$A10)*($P$10:$P19=$P10))-SUMPRODUCT(($A$9:$A9=$A10)*($P$9:$P9=$P10))+OFFSET(Q10,-1,))>VLOOKUP(Q$8,$Q$2:$S$6,3,FALSE),VLOOKUP(Q$8,$Q$2:$S$6,2,FALSE), OFFSET(Q10,-1,)+1), OFFSET(Q10,-1,)) R列 =IF($P10=R$8,IF((SUMPRODUCT(($A$10:$A19=$A10)*($P$10:$P19=$P10))-SUMPRODUCT(($A$9:$A9=$A10)*($P$9:$P9=$P10))+OFFSET(R10,-1,))>VLOOKUP(R$8,$Q$2:$S$6,3,FALSE),VLOOKUP(R$8,$Q$2:$S$6,2,FALSE), OFFSET(R10,-1,)+1), OFFSET(R10,-1,)) S列 =IF($P10=S$8,IF((SUMPRODUCT(($A$10:$A19=$A10)*($P$10:$P19=$P10))-SUMPRODUCT(($A$9:$A9=$A10)*($P$9:$P9=$P10))+OFFSET(S10,-1,))>VLOOKUP(S$8,$Q$2:$S$6,3,FALSE),VLOOKUP(S$8,$Q$2:$S$6,2,FALSE), OFFSET(S10,-1,)+1), OFFSET(S10,-1,)) T列 =IF($P10=T$8,IF((SUMPRODUCT(($A$10:$A19=$A10)*($P$10:$P19=$P10))-SUMPRODUCT(($A$9:$A9=$A10)*($P$9:$P9=$P10))+OFFSET(T10,-1,))>VLOOKUP(T$8,$Q$2:$S$6,3,FALSE),VLOOKUP(T$8,$Q$2:$S$6,2,FALSE), OFFSET(T10,-1,)+1), OFFSET(T10,-1,)) U列 =IF($P10=U$8,IF((SUMPRODUCT(($A$10:$A19=$A10)*($P$10:$P19=$P10))-SUMPRODUCT(($A$9:$A9=$A10)*($P$9:$P9=$P10))+OFFSET(U10,-1,))>VLOOKUP(U$8,$Q$2:$S$6,3,FALSE),VLOOKUP(U$8,$Q$2:$S$6,2,FALSE), OFFSET(U10,-1,)+1), OFFSET(U10,-1,)) AB列 =IF(I10="","",INDEX(Q10:U10,MATCH(IF(LEFT(I10,LEN(Q$8))=Q$8,Q$8,LEFT(I10,FIND(",",I10&",")-1)),Q$8:U$8,0))) こんな感じで入っています。 (みこ) ---- えっと、数式を教えてもらっただけでは シートは出来ないんですね。。。 と言うか、これってもしかして 転記が終わった所からデータを消していったら 根拠となる数字が変わっていくので 転記されたデータは、転記したかったデータと異なる可能性がある なんて事は無いですか? >こちらを閉じて >ロットのスレを立ち上げても >よろしいでしょうか? そうですね。 それぞれ個別に作るのではなく 両方を考えながら作っていった方が良いかもしれません。 (HANA) ---- >転記されたデータは、転記したかったデータと異なる可能性がある >なんて事は無いですか? 予定表の空白欄に入力して 転記 各シ-トの空白欄に飛んでいきます。 この時点では問題ないのですが ロットが関係してきます。 ロットに関しては、予定表のロットと各シ-トのロット にそれぞれ式を入れてありますから 問題ないです。 検証済み 予定表のロットの不具合が生じまして ロットのレスを立ち上げさせていただきます。 (みこ) ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/200909/20090914095259.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97046 documents and 608224 words.

訪問者:カウンタValid HTML 4.01 Transitional