[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『6つのシートの同じ場所の値でかぶらないように抽出』(AAA)
6つの同じフォーマットがあります。
T2:V2に項目名 W2に: X2:AH2に取引先名前
T:3V3に項目名 W3に: X3:AH3に住所
T4:V4に項目名 W4に: X4:AH4に取引先名前
T:5V5に項目名 W5に: X5:AH5に住所
が記載されています。
T2からの取引先の名前と
T4からの取引先の名前は1シート内では絶対に違うものになります。
それが計6シートあり
7シート目の
B26に項目名C26に6シート分の上記の取引先名を重複しないように抽出
住所も同様にB27に項目名C27に住所
上記の様な形で7シート目にB26から下に取引先名、住所、取引先名、住所・・・
と交互に重複しないものだけを抽出したいのですが
関数またはVBAどちらでも構わないので何か方法わかるかたがいたら回答よろしくお願いします。
< 使用 Excel:unknown、使用 OS:unknown >
この依頼の仕方が嫌いなんですよ。判るから簡単に解決できるだろう、という他力本願にしか見えない。
判るから回答しているのではなくて、時間をかけて調べて、コーディングして、試験して、そして回答するんですよ。
それなのに、質問者は元データの実例と、期待する出力の具体例すら書かない手抜き。試験データまで回答者に考えさせているわけです。
とりあえず、今回の場合、出力が特に判りません。1つの項目に、複数の取引先があった場合、どう出力したいのですか?
あと、W列のコロンも意味不明。無視で良いですか?
(1) B C 26 項目名1 取引先1 27 項目名1 住所1 28 項目名1 取引先2 29 項目名1 住所2
(2) B C D 26 項目名1 取引先1 取引先2 27 項目名1 住所1 住所2
(3) B C 26 項目名1 取引先1、取引先2 27 項目名1 住所1、住所2
(???) 2015/05/20(水) 16:03
結果をまとめるシートの、シートモジュール用マクロとして貼ってください。
(うまくいったら、ActiveXのボタンでも貼って、そっちに記述すると使いやすいでしょう)
Sub test() Dim i As Long Dim j As Long Dim k As Long Dim iR As Long Dim iw As Long
iR = 26
iw = Cells(Rows.Count, "C").End(xlUp).Row If iw < iR Then iw = iR End If Range("B26:C" & iw).ClearContents
For i = 1 To Sheets.Count If Sheets(i).Name <> Me.Name Then With Sheets(i) For j = 2 To .Cells(.Rows.Count, "T").End(xlUp).Row Step 2 For k = 26 To iR Step 2 If .Cells(j, "T").Value = Cells(k, "B").Value And _ .Cells(j, "X").Value = Cells(k, "C").Value Then Exit For End If Next k If iR < k Then Cells(iR, "B").Value = .Cells(j, "T").Value Cells(iR, "C").Value = .Cells(j, "X").Value Cells(iR + 1, "B").Value = .Cells(j + 1, "T").Value Cells(iR + 1, "C").Value = .Cells(j + 1, "X").Value iR = iR + 2 End If Next j End With End If Next i
Sort.SortFields.Clear Sort.SortFields.Add Key:=Range("B26:B" & iR - 1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveSheet.Sort .SetRange Range("B26:C" & iR - 1) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub (???) 2015/05/20(水) 17:31
B C 26 取引先1 会社名 27 住所1 住所 28 取引先2 会社名 29 住所2 住所 ・ ・ ・
であっています。
項目名は仮として今は
T2: V2に取引先1 W2に: X2: AH2に取引先名前
T:3V3に住所1 W3に: X3:AH3に住所
T4: V4に取引先2 W4に: X4: AH4に取引先名前
T:5V5に住所2 W5に: X5:AH5に住所
になっています。
同じフォーマットのsheetが6つあります。
取引先1と住所1でワンセットになっています。それを上記の場所に抽出したいです。
???さんのコードを試した結果です。
C列
2015/5/16
5/16/2015
取引先1
取引先1
取引先1
取引先1
住所1
住所1
住所1
住所1
住所1
住所2
C26セルから↓にこのようにでてしまいました。
(AAA) 2015/05/25(月) 10:13
B C 26 取引先1 会社名 27 住所1 住所 28 取引先2 会社名 29 住所2 住所
いやいや、これ全然想定と違いますよ。だから元データの実例を、と言ってます。
このデータならソートできないので、Sortしている以降は全部削除してください。
あと、結果に日付っぽいのが含まれてますが、データの範囲は合ってますか? 含めてはいけないシートが存在しませんか?
(除外する指定は無かったので、自分のシート以外全部を対象とするコーディングになっています)
もっとも変なのが、T列とX列からデータを抜き出しているのに、結果が1列しかない事。正しい情報を教えてください。
または、とりあえずコーディング例は出しているので、これを元にご自身で修正してください。
(???) 2015/05/25(月) 11:55
をSheet1〜Sheet6まで
まとめシートに
B列 26 取引先1 27 住所1 28 取引先2 29 住所2 30 取引先3 31 住所3 32 取引先4 33 住所4
が予め入力されていてC:E列に被らないように6つのシートから
取引先と住所のセットをとりだしたいです。
(AAA) 2015/05/25(月) 12:07
で、B列が最初から入っているなら、話は簡単になるわけです。これならサンプルを元に、自力作成できるのでは?
(データ不明なので、動作確認していません)
Sub test() Dim i As Long Dim j As Long Dim k As Long Dim iw As Long
iw = Cells(Rows.Count, "B").End(xlUp).Row If 26 <= iw Then Range("C26:C" & iw).ClearContents End If
For i = 1 To Sheets.Count If Sheets(i).Name <> Me.Name And Sheets(i).Name <> "祝日表" Then With Sheets(i) For j = 2 To .Cells(.Rows.Count, "T").End(xlUp).Row Step 2 For k = 26 To iw Step 2 If .Cells(j, "T").Value = Cells(k, "B").Value And _ .Cells(j + 1, "T").Value = Cells(k + 1, "B").Value Then Cells(k, "C").Value = .Cells(j, "X").Value Cells(k + 1, "C").Value = .Cells(j + 1, "X").Value Exit For End If Next k Next j End With End If Next i End Sub
(???) 2015/05/25(月) 13:04
B列は最初から入っていますが、各シートのT2:V2から↓に入っているものは
取引先2
住所2までしか用意していないので
項目名で一致はさせられず、困っていました。
C:Eは結合されています。
各6つのシートから被らない住所と取引先名を抽出したいです。
上記のコードですと結果的になにも表示されないままになってしまいました。
(AAA) 2015/05/25(月) 14:24
項目名とは、実際には「取引先1」「住所1」等の文字列なのではないのですか? そしてそれは、各シートの
T列と完全一致しているのではないのですか? 一致していないのならば、B列ってなんのためにあるのですか?
データがどうであれ、全シート分をループさせる方法は提示しているのです。実例を明記できないのであれば、
あとはどのセルを見て、どのセルをコピーするのか、そこだけご自分で考えて、応用してください。
(???) 2015/05/25(月) 14:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.