Excel VBA質問箱 IV

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

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


13922 / 76738 ←次へ | 前へ→

【68316】Re:VLOOKUPを使ったデータの参照
発言  UO3  - 11/2/23(水) 13:36 -

引用なし
パスワード
   ▼ケメ子 さん:

こんにちは

↑で申し上げた懸念も含めて、すこしは解消する構成案です。

1.まず、現在のWorksheet(1)に替えて、あるいは、それとは別に"Layout"というシートを
  準備します。このシートのA列に情報名、B列に、その値を記載します。
  コードとしてはB列だけを使います。
  (ざっと、レイアウト規定に最低限必要な情報をピックアップしましたら29個ありました)
2.これら情報を、処理の最初にVBAに取り込みます。
  通常は変数を規定しておいて、セルから変数への入れ込みを29行書くことになりますが
  ご提案コードでは、これを1から始まる配列変数 v に入れ込みます。
  (つまり、B列の値が v(1)からv(29)に入ります。)
3.コード内で v(1) とか v(29)と記述すると、後で見た人が何の項目かわからなくなりますね。
  ですから たとえば POSaPath = 1 といったような宣言をしておいて v(POSaPath)というように
  使います。
4.で、これを規定するには
  Const POSaPath As Long = 1
  Const POSbPath As Long = 2
  といったように記述していくのが一般的ですが、今回は(もしかしたらケメ子さんがごらんになったことがない)
  Enum を使っています。

  Enum 任意の名前
   aaaa
   bbbb
   cccc
  End Enum
 
  こうしますと、aaaa=0,bbbb=1,cccc=2 と自動的に値を設定してくれます。
  今回は最初の項目を1にしますので、

  Enum Rayout   'データシートのレイアウト規定
   stLayout
   POSaPath      '元パス
   POSbPath      '前月パス
    ・・
   POScPre       '今月ファイルの接頭文字列
   edLayout
  End Enum
  
  といった記述にしています。
  stLayoutはあコードでは使っていません。0をふるためのダミーです。
  ちなみにPOSaPthから最後のPOScPreまで、先ほど申し上げたとおり29個になりますので
  POScPreは29ということになります。
  最後の、edLayoutもダミーです。項目数29を取得するために使います。

5.POSaPathからPOScPreの並びはLayoutシートに登録してあるものと同じにします。
  Layoutシートのほうは、追加で登録必要になったとき、随時登録可能です。
  ただし、それにあわせて、同じ場所に、追加された項目をあらわす変数を追加してください。
  Layoutシートの順番を入れ替えることも可能です。ただし、同様に、Enum記述の順番も
  それにあわせて変更します。
  (前項でPOSaPathに1を与えれば、ダミーのstLayoutは不要ですし、情報数はPOScPreの値
   ですからダミーのedLayoutも不要になりますが、記述順を変更した場合もコード修正しなくて
   いいようにしてあります)

ご参考までにこちらのレイアウトを以下にコピペします。
ちょっとたての位置が見づらいかもしれませんが、これをコピーして
RayoutシートのA列に「テキスト」で貼付け、以下の分解プロシジャを走らせれば
A列とB列に、それぞれセットされますので、もしよければお使いください。

Sub 分解()
  Dim c As Range
  Dim s As String
  Dim v As Variant
  Dim w As Variant
  For Each c In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
   s = Replace(c.Value, " ", " ")
   v = Split(s, " ")
   w = v
   w(UBound(w)) = ""
   Cells(c.Row, "A").Value = Join(w, "")
   Cells(c.Row, "B").Value = v(UBound(v))
  Next
End Sub


元パス    c:\元データ
前月パス    c:\前月度提出用
今月パス    c:\今月度
シートAのシート名    A
シートBのシート名    B
シートCのシート名    C
シートDのシート名    D
元 データ開始行    16
元 シートAのデータ開始列    C
元 シートBのデータ開始列    F
元 シートCのデータ開始列    M
元 シートDのデータ開始列    E
前月 データ開始行    16
前月 シートAのkeyデータ列    E
前月 シートBのkeyデータ列    H
前月 シートCのkeyデータ列    O
前月 シートDのkeyデータ列    G
前月 シートAのランク列    P
前月 シートBのランク列    O
前月 シートCのランク列    V
前月 シートDのランク列    N
今月 データ開始行    6
今月 データ開始列    B
今月 keyデータ列    D
今月 ランク列    E
今月 式の開始列    F
今月 式の列数    4
元->今月 コピー列数    3
今月ファイルの接頭文字列    【作業】

0 hits

【68149】VLOOKUPを使ったデータの参照 ケメ子 11/2/7(月) 0:02 質問
【68152】Re:VLOOKUPを使ったデータの参照 UO3 11/2/7(月) 11:14 発言
【68162】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/7(月) 22:43 発言
【68164】Re:VLOOKUPを使ったデータの参照 UO3 11/2/8(火) 12:45 発言
【68173】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/8(火) 22:04 発言
【68174】Re:VLOOKUPを使ったデータの参照 UO3 11/2/9(水) 11:43 発言
【68175】Re:VLOOKUPを使ったデータの参照 UO3 11/2/9(水) 12:12 発言
【68176】Re:VLOOKUPを使ったデータの参照 UO3 11/2/9(水) 12:25 発言
【68177】Re:VLOOKUPを使ったデータの参照 UO3 11/2/9(水) 13:09 発言
【68180】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/9(水) 22:11 発言
【68182】Re:VLOOKUPを使ったデータの参照 UO3 11/2/10(木) 12:26 回答
【68183】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/10(木) 23:35 発言
【68232】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/16(水) 23:15 質問
【68237】Re:VLOOKUPを使ったデータの参照 UO3 11/2/17(木) 10:29 回答
【68240】Re:VLOOKUPを使ったデータの参照 UO3 11/2/17(木) 10:43 発言
【68243】Re:VLOOKUPを使ったデータの参照 UO3 11/2/17(木) 11:02 回答
【68254】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/17(木) 22:39 発言
【68255】Re:VLOOKUPを使ったデータの参照 UO3 11/2/17(木) 23:08 発言
【68259】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/18(金) 21:14 発言
【68303】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/22(火) 0:44 質問
【68306】Re:VLOOKUPを使ったデータの参照 UO3 11/2/22(火) 9:28 発言
【68307】Re:VLOOKUPを使ったデータの参照 UO3 11/2/22(火) 9:50 発言
【68308】Re:VLOOKUPを使ったデータの参照 UO3 11/2/22(火) 10:27 発言
【68314】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/23(水) 0:19 発言
【68315】Re:VLOOKUPを使ったデータの参照 UO3 11/2/23(水) 13:32 発言
【68316】Re:VLOOKUPを使ったデータの参照 UO3 11/2/23(水) 13:36 発言
【68317】Re:VLOOKUPを使ったデータの参照 UO3 11/2/23(水) 13:38 回答
【68321】Re:VLOOKUPを使ったデータの参照 UO3 11/2/23(水) 22:04 発言
【68322】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/23(水) 22:04 質問
【68331】Re:VLOOKUPを使ったデータの参照 UO3 11/2/24(木) 11:46 発言
【68333】Re:VLOOKUPを使ったデータの参照 UO3 11/2/24(木) 11:47 発言
【68346】Re:VLOOKUPを使ったデータの参照 ケメ子 11/2/24(木) 22:46 発言
【68421】Re:VLOOKUPを使ったデータの参照2 ケメ子 11/3/3(木) 20:15 質問
【68425】Re:VLOOKUPを使ったデータの参照2 UO3 11/3/4(金) 12:32 回答
【68426】できました!! ですが・・・ ケメ子 11/3/4(金) 20:31 質問
【68429】Re:できました!! ですが・・・ UO3 11/3/4(金) 21:51 発言
【68431】Re:できました!! ですが・・・ UO3 11/3/5(土) 16:58 回答
【68432】Re:できました!! ですが・・・ ケメ子 11/3/5(土) 18:53 発言
【68441】プロシージャの追加場所 ケメ子 11/3/7(月) 21:21 質問
【68442】Re:プロシージャの追加場所 UO3 11/3/7(月) 21:59 回答
【68479】\(^o^)/ ケメ子 11/3/9(水) 20:58 お礼

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