• ベストアンサー

Excel VBA 2013; 並び替え、セル比較

kagakusukiの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 回答No.4に対して頂いた補足内容を拝見しました事により、質問者様がやりたい事が更に解らなくなりました。 >左の表だけが存在する場合(右の表は空欄)、右の表だけが存在(左の表は空欄)する場合もあります。 という事は、左の表を基準にするのではなく、両方の表を並べ変えるという事なのでしょうか?  そうしますと、何を並べ替えの基準にすれば宜しいのでしょうか?  右の表を並べ替えると、左の表の空欄となる行の位置が変わってしまいますので、左の表の空欄となる行の位置が定まりません。 >リストの所々で左の表だけが存在する場合(右の表は空欄)、右の表だけが存在(左の表は空欄)する場合もあります。 >商品番号、売上日を連結したキー順に左右にリストしていきます。 >最終行に移動はしないです。 との事ですが、それでは右の表だけが存在するデータはどこに移動させれば宜しいのでしょうか?  左の表に「左右の表の両方に存在している商品番号と日付の組み合わせ」が入力されている行に、並べ替え前の右の表には「左の表には存在しない商品番号と日付の組み合わせ」が入力されている場合もあり得るのでは? >>左右の各表において「商品番号と売上日の両方が同じデータ」がどちらも複数存在する場合には、 >(返答) >あくまでキーなる商品番号、売上日がマッチしたキー順に左右にリストしていきます。 >「商品名」~「仕入先」は考慮しません  それでは複数存在する「商品番号、売上日がマッチしたキー」をどの様な基準の順番で右の表に並べていけば宜しいのでしょうか? >「商品名」~「仕入先」は考慮しません と仰るだけで代わりとなる基準を示さないのでは困ります。  例えば、回答No.3で述べている様に、右の表の中に複数存在している「商品番号と売上日の両方がマッチするデータ」の内、一番上にある1行のデータのみをコピーして貼り付ける様にすれば宜しいのですか? >>もしも「商品番号と売上日の両方が同じデータ」となっている行の数が右の表の方が多い場合には、 >(返答) >リストの所々で左の表だけが存在する場合(右の表は空欄)、右の表だけが存在(左の表は空欄)する場合もあります。 >商品番号、売上日を連結したキー順に左右にリストしていきます。 >最終行に移動はしないです。  それでは右の表の「商品番号と売上日の両方が同じデータ」の中で余ったデータをどこに移動させれば宜しいのでしょうか? >最終行に移動はしないです。 と仰るだけで代わりとなる移動先を示さないのでは困ります。  左の表に「左右の表の両方に存在している商品番号と日付の組み合わせ」が入力されている行に、並べ替え前の右の表には「左の表においてまた別の行に入力されている商品番号と日付の組み合わせ」で尚且つ「余っているデータ」が入力されている場合もあり得るのでは? >>もしも「商品番号と売上日の両方が同じデータ」となっている行の数が右の表の方が少ない場合には、左の表に「商品番号と売上日の両方が同じデータ」が入力されている行の右表のセル範囲に対して上から順番に、右の表の「商品番号と売上日の両方がマッチするデータ」を割り振って行き、割り当てるべきデータが不足している行に関しては空欄とする。 >(返答) >リストの所々で左の表だけが存在する場合(右の表は空欄)、右の表だけが存在(左の表は空欄)する場合もあります。 >商品番号、売上日を連結したキー順に左右にリストしていきます。 >最終行に移動はしないです。  返答になっておりません。 >割り当てるべきデータが不足している行に関しては空欄とする。 のは、「商品番号と売上日の両方が同じデータ」が左右どちらの表にも存在していて、尚且つ、「同じ商品番号と売上日の組み合わせのデータ」が入力されている行の数が、左の表の方が多く、右の表の方が少ない場合に関する提案であって、 >左の表だけが存在する場合 では御座いません。  その上、 >割り当てるべきデータが不足している行に関しては空欄とする。 という提案に対して、 >最終行に移動はしないです。 と返答して来られても何の話なのか意味不明です。  こちらは、 >商品番号、売上日を連結したキー順に左右にリスト して行った結果、右の表に存在する「商品番号、売上日を連結したキー」が不足した場合に関する話をしているというのに >商品番号、売上日を連結したキー順に左右にリストしていきます。 とは、どういう事なのでしょうか?  リストすべきキーを表の上部で使い切って、リストする事が出来るデータがもう残っていないというのに、何をリストすると仰るのでしょうか?

genesis50
質問者

補足

混乱をまねき申し訳ございませんでした。 ご指摘のとうり、 左の表を正としてしてキー項目がヒットした項目を最も列項目がマッチしたものから右の表に並べていき、ビットしなかったり、左右で行数が異なっていれば 下のほうに配置するのが自然とおもいます。 混乱をまねき申し訳ございませんでした。 別途、質問させてください。 いただきましたサンプルでエラーを起こしています。 対策を教えていただけませんでしょうか? ↓右の表を並び変える箇所でエラーをエラー1004「アプリケーション定義またはオブジェクト定義のエラーです。」起こしています。 With outSheet.Range(FirstColumn2 & i) >With .Resize(1, ListColumns).Value = .Offset(TargetRow - i).Value End With >With Range(FirstColumn2 & TargetRow).Resize(LastRow2 + SearchRows - TargetRow + 1, ListColumns)..Value = .Offset(1).Value End With . . ・TargetRowは"0"がセットされていました。 ・Resizeプロパティの前に、Worksheets("Sheet1")などのシート定義、Rangeプロパティなどのセルの定義は必要ないでしょうか?

関連するQ&A

  • 行の並び替え、セルの比較

    突き合わせ作業をおこないたいです。 同一列項目からなるデータを左右に並べて、左側を正として、例えば商品番号、売上日を連結するなりキーとしてマッチしたら右側の同一行に並へ 変えていきます。 そして、各行単位で比較して、差異があるセルに色付けしたいと考えています。 行数は不定です。 やり方がまったくわかりません。 サンプルを添付させていただきます。 アイデアをいただけませんでしょうか?

  • Excel データの再配置

    Excelでデータを再配置するマクロの組み方を教えて下さい! 参考画像→ http://goo.gl/2nLWH 画像左側のように複数のデータセットが縦方向に配置されているシートで、左上が「セット○」セルから始まるデータセット単位で横方向に空白列を挟んで再配置したいと思っています。 画像はサンプルデータで、実際には行数は不定数、列数は4列のセットが複数個存在します。 宜しくお願いします。

  • perl シングルコーテーションを含んだ文字編集

    active perl(アクティブパール)で 以下の文字列編集を行いたいのですが、 シングルコーテーションの編集で上手く出来ずに困っています。 どなたか経験豊富な方、良いコーディング方法があれば ご教授下さい。 やりたい事としては、 文字列 aaaaaa bbbbbb cccccc dddddd といった内容を 取り込んで 'aaaaaa','bbbbbb','cccccc','dddddd' といった文字列の出力を行います。 上記の例では文字はddddddまでですが、 場合により bbbbbbまでたったりといった感じで 変換前の文字の行数は可変で、2行でも3行でも4行でも、 各行の文字をシングルコートで囲って、カンマでつなげた文字列を出力します。 上記の仕様内容で、こうすれば出来る! といったサンプルコードを教えていただけると助かります。

  • エクセル セルの比較

    セルの比較について教えてください。 A1~A10と、B1~B10に文字が入っています。 Aがりんごのときは、Bは果物、 Aがキャベツのときは、Bは野菜 となっていなければなりません AとBの同じ行のセルの内容が、この条件と一致しないものが、1行から10行までひとつでもあった場合に、C1に『一致していない箇所があります』と出るようにしたいです。 マクロは使わないでお願いします。

  • エクセルとセルの比較について

    エクセルとセルの比較について エクセル2007で二枚のシートを以下のように作成しました。 シート1   A 1   ←全くの未入力の空白セルです 2 3 シート2   A 1   ←未入力で空白セルですが、数式(if関数とISERROR関数)が入っています。 2 3 ここでしたい処理は、二枚のシートをIF関数で調べて正誤チェックをして、相違するセルに×を表示したいです。 ただ、A1セルに  if(シート1A1=シート2A1,"","×")  の数式をいれると、両者は違うセルとして認識してしまいます。 同じ空白セルなのにどうしてでしょうか。 また、この二つのセルはともに空白なので、同じものとして処理する方法はあるのでしょうか。 お願いします。

  • Excelのセルの比較について教えて下さい

    使用しているのはExcel2003です。 下記のようなシートがあります。          1月  2月  3月  4月 …  | 前年比(%) 平成19年度 10   20   30   40  …  | 平成20年度 50   60              | この状態から平成20年度の前年比を算出したいのですが、 平成20年度3月の値を入力したら 前年の1~3月の値の合計 と 20年の1~3月の値の合計 の比率を右下のセルに表示し、          1月  2月  3月  4月 …  | 前年比(%) 平成19年度 10   20   30   40  …  | 平成20年度 50   60   70          |  300% 平成20年度4月の値を入力したら 前年の1~4月の値の合計 と 20年の1~4月の値の合計 の比率を右下のセルに上書き表示(自動更新)できるようにする          1月  2月  3月  4月 …  | 前年比(%) 平成19年度 10   20   30   40  …  | 平成20年度 50   60   70   80      |  260% といったものは可能でしょうか? 可能であればご教授お願いします。 よろしくお願いします。

  • Excelのセルの比較について

    Excelのマクロにてセルの比較を行っています。 A1に"123" A2をハイパーリンクに指定して"123"と表示しています。 表示形式はどちらも通貨で表示しています。 If Range(A1).Value <> Range(A2).Value Then   MsgBox "同じではない" Else   MsgBox "同じ" End If と比較しているのですが"同じではない"が表示されてしまいます。 試しに MsgBox Range(A1).Value と MsgBox Range(A2).Value を表示してみたところ、どちらも"123"と表示されました。 セルに表示されている値で比較するにはどうしたらいいのでしょうか?

  • Excel VBAで比較させたい。

    sheet1のA1に山田さん、B1に佐藤さんと打ちます。 で、sheet2のA列に山田さんB列に佐藤さんの情報があります。 それを比較する方法を知りたいんですけど。 ちなみに、sheet1のA1に鈴木さん、B1に山崎さんなど色んなパターンが存在します。 A1に山田さんだったらsheet2のA列、B1に佐藤さんだったらsheet2のB列を見に行って それを比較して、一致しない所だけsheet3に表示させる方法などありますか? 当方まったくの初心者で…(^^;

  • エクセル2003 VBAで セル内を 一発呼び出し

    エクセル2003 オートフィルタではなく VBAで セル内を 一発呼び出ししたいので。  よろしく お願いします。 表 列A~E(結合2行) :商品名と内容   列H~K(結合2行) 住所氏名電話番号を記載してます。 1年分を オートフィルターで  氏名 や 商品名で 探すのは 結構 時間がかかります。 同じものが ほぼ少ないため。。。 そこで  たまに 同じ氏名  同じような 品を 検索する セルを 2個ほど作って  そこへ セル1へ 商品名を入力すると  該当する 行のみ 表示される。 セル2に 名前をを入力すると  該当する 行のみ 表示される。 また、セルを赤色に塗った部分の結合行(2~3行)を 赤色に塗りつぶした行のみ 表示も できれば うれしいです。 コマンドボタン等を使ってもいいので お願いします。 そんな VBAを 作っていただけませんでしょうか^^; お手数おかけしますが どなたか よろしく お願いします。 

  • ExcelのVBA、セルについて教えて下さい

    セル内容の比較についてのマクロで教えてください。 まずブックAとブックBという2つのワークブックがあります。 ブックAのD4セルにはS144A03といったよな数字と英語が入っています。 ここからが行いたいことなのですが ブックAでマクロ実行 ⇒ ブックBを開きシートAを選択 Application.InputBoxでブックBのシートA内のセルを選択してOKを押した時 ブックAのD4セルの内容とApplication.InputBoxで選んだセルの内容が同じなら”認証OK” 違う場合は”認証NG”とMsgBoxで表示されるようにしたいです。 認証後はどちらの結果であってもブックBの方は閉じてしうまう形にしたいです。保存の確認はいりません。 ご指導のほどよろしくお願いします。