[[20170511010122]] 『マクロでデータ作成』(カメ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロでデータ作成』(カメ)

エクセルのマクロを勉強中です。ほとんど使ったことがありません。

sheet2 A(選択リストになってます) 新規
                  再発行
                  無効

sheet2 B              大阪
                  京都
                  奈良

Sheet2 C              りんご
                  いちご
                  ばなな

sheet2 D (選択リストになってます) 田中
                  鈴木
                  佐藤

sheet2 E              田中君
                  鈴木君

                                   佐藤君                     
                 

sheet1のA2に無効以外のデータがあった場合、sheet1をコピーする。
sheet2でA1が無効以外であった場合、sheet2 Bをsheet1のAに、sheet2 Cをsheet1のDに貼り付ける。
sheet2 Cの重複チェック。重複があった場合、sheet2 Cの値はEにも貼り付ける。(大阪 りんご 大阪 いちごであった場合、Dにりんご Eにいちごと隣の行へ追加でペーストしていく)
sheet2のDで田中が選択された場合、sheet1のBに"田中君"と表示、同じように、鈴木を選択した場合、"鈴木君"と表示

説明がわかりづらく申し訳ないのですが、どのようにすればよいかお教えいただけないでしょうか。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 >sheet1のA2に無効以外のデータがあった場合、sheet1をコピーする。

 どこに貼り付けるんですか?
 それとも「何かをsheet1にコピーする」の意味ですか?

 Sheet2 AとはA列のことですか?
 レイアウトの形で掲示していただくと分かり易いのですけども。

(半平太) 2017/05/11(木) 07:30


 >>sheet1のA2に無効以外のデータがあった場合、sheet1をコピーする。
 >どこに貼り付けるんですか?
 >それとも「何かをsheet1にコピーする」の意味ですか?

sheet1が出力用のsheetになります。

 >Sheet2 AとはA列のことですか?
 >レイアウトの形で掲示していただくと分かり易いのですけども。

 <Sheet1>
  行  __A__  ___B___  ___C___  ___D___  ___E___
   1  大阪   田中君   りんご   いちご    りんご

 <別sheet>
  行  __A__  ___B___  ___C___  ___D___  ___E___
   1  奈良   鈴木君   いちご       

 <別Sheet>
  行  __A__  ___B___  ___C___  ___D___  ___E___
   1  京都   佐藤君   ばなな      

 <Sheet2>
  行  ___A___  __B__  ___C___  __D__
   1  再発行   大阪   りんご   田中 
   2  無効     大阪   ばなな   田中     
   3  新規     奈良   いちご   鈴木    
   4  再発行   大阪   りんご   田中 
   5  新規     京都   ばなな   佐藤     

上記のようなイメージになります。わかりづらく申し訳ございません。
(カメ)2017/05/11(木) 08:29


 > <別sheet> 
 「別Sheet」とは、Sheet1の別の姿と言う意味ですね?

 昨日、マナさんが同じような案件に回答していましたので、それを拝借します。
[[20170509130254]] 『Dictionary』(xy)

 ※Bの大阪とDの田中が一致していないと面倒なことになる気がしますが、そんな事態は無いとの前提とします。

Sub test()

     Dim dic As Object
     Dim c As Range
     Dim KeyWord, valToShow
     Dim Ws1 As Worksheet, Ws2 As Worksheet

     Set Ws1 = Sheets("Sheet1")
     Set Ws2 = Sheets("Sheet2")

     Set dic = CreateObject("scripting.dictionary")

     KeyWord = Ws1.Range("A1").Value

     For Each c In Ws2.Range("A1", Ws2.Range("A" & Rows.Count).End(xlUp))
         If c.Value <> "無効" And c.Value <> "" Then
             If KeyWord = c.Offset(, 1).Value Then
                 If Not dic.exists(KeyWord) Then
                     dic(KeyWord) = c.Offset(, 3).Value & "君" & "#!#" & c.Offset(, 2).Value
                 Else
                     dic(KeyWord) = dic(KeyWord) & "#!#" & c.Offset(, 2).Value
                 End If
             End If
         End If
     Next

     Ws1.Rows(1).ClearContents
     Ws1.Range("A1").Value = KeyWord

     If dic.Count = 1 Then
         valToShow = dic.Items
         valToShow = Split(valToShow(0), "#!#")
         Ws1.Range("B1").Resize(1, UBound(valToShow) + 1) = valToShow
     End If
End Sub

(半平太) 2017/05/11(木) 09:44


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.