• 締切済み

EXCEL2002で、VBAにお詳しい方、お願いします

 初心者の為、基本的な質問ですみません。私の場合、まず初めに、下記に記す、元々ベース(下敷き)となるVBAコードがあって、その変更方法について、お尋ねします。 下記リンクのVBA⇒ANo.5では、A4の4桁の数字を、4行目にあるIn Range("D4:F104")の中から、探してきて、置き換えるのですが、  新たに付け加えて改良したい点 (1)参照セルとなる、4桁数字の入力セルを、これまでのA列、A4,起点から, 他の(1)B列、B4,起点、(2)C列、C4,起点、に変更する際、VBAのどの部分を、どのように変更するのか? 下記のVBAに当てはめ、書いて頂けると、たいへん有難いです。 (2)上記(1)が出来なくとも、同じ1枚のワークシートに、 (1)上記(1)A4⇒⇒⇒D4:F104 の他にも、(2)    G4⇒⇒⇒J4:L104 (3)    M4⇒⇒⇒P4:R104 と、縦長に、3系統、下記と全く同じVBAを更に横に3列並べて、区分して記述する場合、上記と同様に、下記に記すVBAのどの部分を、どのように変更するのか? 下記のVBAに当てはめ、書いて頂けると、たいへん有難いです。 (1)A4⇒⇒⇒D4:F104|(2)G4⇒⇒⇒J4:L104| (3)M4⇒⇒⇒P4:R104 たいへん手前勝手で、都合の良い話ですが、教えて頂けると、非常に有難いです。宜しくお願いします。   ≪元々の、ベース(下敷き)となるVBA≫ QNo.2487806の⇒ANo.5  http://okwave.jp/qa2487806.htmlの発展の質問です。 後残り十数行なのですが、VBAの以下の部分を全て記述すると800字を越えてしまうので、御覧になって、興味を持って頂いたなら、「仮の回答」をください。そこで、直ちに、その「回答の補足」に、残りのVBAを書き込みますので、「正式の回答」を下さい!紙幅が足りない為、説明が舌足らずですが、次回の「回答補足」では、字数に捕われず解り易く書けます。

みんなの回答

回答No.1

では 補足ねがいます

TRADKING
質問者

補足

 御回答頂けるということで、誠に有難うございます。  お優しい方に出会えて、たいへん幸運に思い、感謝しております。    では、さっそく本題の件に移らせて頂きます。  当初は、800字制限を想定していなかった為、リンクを貼った、質問の≪元々の、≪元々の、ベース(下敷き)となるVBA≫ QNo.2487806の⇒ANo.5 http://okwave.jp/qa2487806.html​ のVBA Scuriptを、"尻切れトンボ"で、書き切れませんでした。当初、書きたかった"一揃いの文章"を、原文そのまま書きます。  VBAにお詳しい方、お願いします  初心者の為、基本的な質問ですみません。  私の場合、まず初めに、下記に記す、元々ベース(下敷き)となるVBAコードがあって、その変更方法について、お尋ねします。 下記のVBAでは、A4の4桁の数字を、4行目にあるIn Range("D4:F104")の中から、探してきて、置き換えるのですが、  新たに付け加えて改良したい点 (1)参照セルとなる、4桁数字の入力セルを、これまでのA列、A4,起点から, 他の(1)B列、B4,起点、   (2)C列、C4,起点、に変更する際、VBAのどの部分を、どのように変更するのか? 下記のVBAに当てはめ、書いて頂けると、たいへん有難いです。 (2)上記(1)でなくとも、同じ1枚のワークシートに、複数個の対応 (1)上記(1)A4⇒⇒⇒D4:F104 の他にも、 (2)    G4⇒⇒⇒J4:L104 (3)    M4⇒⇒⇒P4:R104 と、縦長に、3系統、下記と全く同じVBAを更に横に3列並べて、区分して記述する場合、上記と同様に、下記に記すVBAのどの部分を、どのように変更するのか? 下記のVBAに当てはめ、書いて頂けると、たいへん有難いです。 (1)A4⇒⇒⇒D4:F104   |  (2)G4⇒⇒⇒J4:L104  | (3)M4⇒⇒⇒P4:R104  A5 | G5 |   M5   なお、念の為、表示の番号に対応させ、 御回答(1)(1)については‥‥‥‥‥‥    (1)(2)については‥‥‥‥‥‥     (2)の場合については‥‥‥‥‥‥  と書いて頂けると、たいへん手前勝手で、都合の良い話ですが、教えて頂けると、非常に有難いです。宜しくお願いします。   ≪元々の、ベース(下敷き)となるVBA≫ Sub データ置換5() Dim RepStr As String Dim r As Range For Each r In Range("C4:E104") RepStr = Num4ck(r.Value) If Cells(r.Row, 1) <> "" And RepStr <> "" Then r.Replace What:=RepStr, Replacement:=Cells(r.Row, 1) End If Next End Sub Function Num4ck(STR As String) Dim tmp As String Dim i As Integer Dim FLG As Boolean For i = 1 To Len(STR) - 3 tmp = Mid(STR, i, 4) If Val(tmp) >= 1000 Then FLG = True Exit For End If Next If FLG Then Num4ck = tmp Else Num4ck = "" End If End Function

関連するQ&A

  • Excel2007VBAで列ごとにランダム並べ替え

    Excel(エクセル)2007VBAを使った、 コマンドボタンを押すたびに「ある一列のデータをランダムに並べ替える」VBAソースが知りたいです。 (Google検索をかなりしたのですが、この条件を満たすVBAソースが見つかりませんでした。) ----------------------------------- たとえば、 【A列】に A1:えんぴつ A2:消しゴム A3:定規 A4:コンパス A5:赤ペン A6:下敷き A7:ノート A8:クリアファイル A9:クリップ A10:色鉛筆 と入力したとします。 そして、コマンドボタンを一回押します。   ↓↓↓ 【A列】が A1:下敷き A2:ノート A3:クリップ A4:コンパス A5:定規 A6:色鉛筆 A7:えんぴつ A8:赤ペン A9:消しゴム A10:クリアファイル ↑のように、 【A列】にある「えんぴつ」「消しゴム」「定規」「コンパス」「赤ペン」「下敷き」「ノート」「クリアファイル」「クリップ」「色鉛筆」の文字が、【ランダムで並べ替え】されるようにしたいです。 【補足】 ※1回限定のランダム並べ替えではなく、コマンドボタンを押すたびに【何度でも】ランダム並べ替えできるようにしたいです(回数無制限のランダム並べ替えがしたいです)。 ※上記の【A列】に並べた文字はあくまで例です。実際は、【A列】に自由に文字を入力できる応用の利く仕様にしたいです(Excelの【A列】に、どんな言葉や数字を直接入力してもランダム並べ替えできる、という意味です)。 ※上記の【A列】が10行というのもあくまで例です。実際は、【A列】が何行にでも対応できる仕様にしたいです(具体的には【A列】が、時間がかかってでも5000行くらいまで対応できるのが理想です)。 実際はVBAを使わなくてもランダム並べ替えはできるのですが、その方法は効率が悪いと分かったので効率のため、コマンドボタンひと押しでランダムに並べ替えられる【VBAソース】が知りたいです。 上記の条件を満たすVBAソースがわかる方がいましたら、どうかご教授ください。 よろしくおねがいします。

  • VBA初心者です。

    お世話になります。 VBAの初心者です。 以下のマクロを組もうと考えているのですが、いまいち理解できていないようで エラーが多発します。 どのようなコードを書けばいいのかアドバイスをお願い致します。 マクロを組みたい部分としては下記の3つです。 ・A列の氏名をSplit関数を使って半角スペースで分割⇒A列に名字、B列に名前 ・E列の郵便番号をSplit関数を使って-で分割⇒E列に上3桁、F列に下4桁 ・G列の住所を、G列⇒都道府県、H列⇒市区町村、I列⇒番地以下 またその際に下記の3点のようにしたいです。 -毎回入力されている行の数が違うため、自動で最終行を取るようにしたいです。 -郵便番号はF列は4桁の数字として入るように表示形式を設定 -I列はテキストとして表示形式を設定 本来であれば、一度自分で書いたものを掲載してアドバイス頂くべきなのでしょうが どのようにコードを書けばいいのかすら分からず困っています。 お手数ですが、よろしくお願い致します

  • excel2003(vba)で御教授御願いします。

        A     B     C 1  番号   名前   タイプ 2  qqq111  Xさん   SA1 3  qqq222  Yさん   SA2 4  aaa111  Xさん   SB1 5  111    Xさん   SC3 6  222    Yさん   SC2 入力情報として上記のような3列からなる情報がエクセルに記入されていたとします。 A1,B1,C1にそれぞれ項目名(列名)があるとします。 番号111と222の人がC列に対して上記のようなタイプを保持しているとき 出力結果として下記の表をVBAにより自動発生させることを実現したいです。     A    B    C    D    E    F    G    H    I 1            SA1   SA2  SB1  SB2   SC1  SC2  SC3 2  番号  名前 3  111   Xさん  ○         ○                  ○ 4  222   Yさん        ○                  ○ ロジックとして、 出力結果のA列は、入力情報のA列の"数字"部分です。 頭三文字:aaa,qqqは省きます。 出力結果のB列は重複している名前を一つにして出力しています。 つまり番号列は数字部分、名前はそのままでそれぞれ重複文を 圧縮して出力します。 さらに、入力タイプ列に書かれた情報通りに○をCからI列のどれかに ○を付けます。 番号と名前は可変するとします。。 また、タイプはSA1からSC3で固定でしてこの中のいづれかに該当するとします。 動作確認を行いOKとなったソースプログラムの記述を御願い致します。 以上長くなりますが、何卒宜しく御教授お願い致します。

  • EXCEL2000VBAの記述について

    e列~j列の5行目に 下記の項目が入っています。   e列 f列 g列 h列 i列 j列 5行目 4月 5月 6月 7月 8月 9月 別シートのE列の5行目に入っているデータと、上記の列(e列~j列)の5行目に入っているデータが 同じの場合は、別シートのE列の6行目から38行目に入っているデータをコピーして、上記の 同じ項目の場所の6行目から38行目にデータを貼り付けたい場合 VBAで記述の仕方を教えてください。

  • 【Excel VBA】並べ替え

    Excel2003を使用しています。 あるテキストファイルから必要なデータを抽出し、予めExcelで作成してある表に、抽出したデータをコピーするという作業をマクロで処理しています。 Excelの表は、A列→4桁の番号(数値)、C列→文字列、D列→数値で、A列の番号順(昇順)に表示されています。 抽出されたデータは、2行目以下に表示されるので、まず、A2セルに『0000』、C2セルとD2セルにそれぞれ該当のデータがコピーされ、以下、順番にコピーされます。このA2セル『0000』の行データをコピーされたデータの一番最後にもっていき、下記のように上方向へシフトさせたいのですが、このようなことはコードを追加することで可能でしょうか?    A列  C列  D列 2  0000  あ  100 3  1200  い  200 4  1500  う  300        ↓ 2  1200  い  200 3  1500  う  300 4  0000  あ  100 データ元のテキストファイルは、会社で使用しているシステムの機能を使って、テキストファイルにしたものです。このデータが昇順で表示されているので、こちらを並べ替えてマクロを実行すればいいかと思ったのですが、数値と文字列が混在しているので、Excelの表にコピーした後(数値と文字列の混在がなくなった後)に、上記のように並び替えることができればと思い、質問させていただきました。 よろしくお願いします。

  • VBAの日付について教えてください

    VBA初心者です。 簡単な質問かもしれませんが、教えていただければと思います。 下記のように日付と時間が並んでいる場合に、営業日の最終注文の時間(B列)をF列にコピーしたいのですが、どうもうまくできません。 例えば、2008/1/15では17:10:00をF列にコピーして、2008/1/16では14:05:00をF列にコピーして・・・というマクロを作成したいのです。 どなたか知恵をお貸しください。 よろしくお願いします。  A        B      C      D     E    F            受注時間   品名     個数 2008/1/15   10:50:00    ・      ・   ・ 2008/1/15   12:55:00    ・      ・   ・ 2008/1/15   15:05:00 2008/1/15   17:10:00 2008/1/16   8:52:00 2008/1/16   14:05:00 2008/1/19   11:10:00 2008/1/19  15:15:00 2008/1/21  9:20:00 2008/1/21  9:53:00  ・  ・  ・

  • エクセルVBAについて

    エクセルVBAについての質問です。A1、B1と順に入力していき、最終 F1列にカーソルがいったときに(F1を空欄のまま)エンターキーを押すと次の行のD2にカーソルが飛ぶ、そしてD2、E2に入力をして、G列にカーソルを動かしエンターキーで次の行のA列にカーソルが移動する、こんな操作をしたいのですが。つまりF列にカーソルがいったらカーソルは次の行のD列に飛び、G列にカーソルがいったら次の行の先頭つまりA列にカーソルが移動するように。VBA初心者でもつくれるかどうか、よろしくお願いします。

  • EXCEL2000:上書きするVBAのコードを教えてください。

    EXCEL2000のマクロを使用して以下のようなことをやりたいと考えています。 VBAに記載するコードを教えていただけますでしょうか。 ●シート構成 1.データシート A列:各データを識別するコード(3桁で000、001等) B列:氏名 C列:年齢 D列:性別 2.入力シート A列:各データを識別するコード(3桁で000、001等) B列:氏名 C列:年齢 ●やりたいこと 1.「入力シート」に識別コードをふり、データを入力しています。 2.そのデータとは別に、「データシート」にもデータを入力しています。 3.「データシート」に存在するデータに関しては、入力シート上のA列:識別コードと同じデータのB列:氏名とC列:年齢を、「入力シート」上のそれぞれの列に上書きします。 4.「データシート」に存在しないデータに関しては、「入力シート」上に存在するデータをそのまま残します。 マクロを作動させると、上記一連の作業が完了するようにできればと考えています。 まとめますと、「データシート」上にデータが存在すればそれを「入力シート」上に表示し、存在しなければ「入力シート」のデータをそのまま表示するというような仕組みにできればと考えています。 ご回答よろしくお願い致します。

  • VBAで重複しないデータを1列縦に並べたいです。

    下記の様にC,E,G,Iに文字(主に地名)を入力した後にVBAでA列に重複しない文字だけ縦に並べて行きたいのですがご教授頂けませんでしょうか。 B,D,F,H,Iは備考として自由記入したいので対象外にしたいです。 説明が難しいのですがA1から横に検索し重複しない文字や数字のみA列上から詰めて転記するイメージとなります。度々入力値が変更される事もあるので実行ボタンを設置してVBAで処理出来たら助かります。どうぞ宜しくお願い致します。 A, B, C, D, E, F, G, H, I, j 111 111 222 111 333 222 111 111 222 444 333 666 555 333 777 444 999 222 333 888 666 555 777 999 888

  • エクセルVBAで2つの条件が一致すれば結果を転記

    エクセルVBAの書き方を教えてください。 以下3つのエクセルファイルがあります。 ・F依頼(使うSheet:ナンバリング ・F結果(使うSheet:OKリスト ・F回答(使うSheet: F結果の「OKリスト」シートのA列3行目に結果が入っています。     A列         B列     C列 3行目 OK(結果)    12345678    9012 F依頼の「ナンバリング」シートには、過去からの番号が書き続けられています。     A列      B列     C列     D列 2行目 日付    12345678    9012    OK(結果) OKリストのB&Cの12桁をナンバリングシートのB&Cから検索し 一致するものがあれば、ナンバリングシートのD列(結果)にOKリストのA列(結果)を 貼り付けたいです。

専門家に質問してみよう