2016-04-18 4 views
0

私はコーディングで新しく、約40,000行と50個の列を持つExcel文書で作業する必要があります。私は重要でない仕様を持つ約35の列を削除しました。Excel:いくつかの列(約10)の値を比較し、異なる最初のものだけを強調表示します

最初の14列には、異なる製品を定義する値があります。これらの定義は、製品の電源またはシリアル番号の仕様としての数字、または製品の名前または起源の仕様としての文字とすることができます。 個人用のフィルタを使用して、すべての列を並べ替えて、最初に列1、列2などに並べ替えます。 15番目の列には、製品があった日付最初に起動しました。

私がしようとしているのは、各行のすべての最初の14列を比較し、最初に起動された列のみを取得することです。 35個の列を削除したので、多くの製品が同じです(他の列の仕様によって異なります)。 列の値が一致しないが、常に最初の値(最初の行)と比較してどこにもないように見える場合は、マクロを記録したり、16番目の列の式を使用して値を返してみました。

誰も私にそこに着く方法のヒントを送ってもらえますか?

私は次のようになります解決策(私はいくつかのExcelファイルでこれを繰り返す持っているとして)い(任意の英語のミスがあった場合は申し訳ありません)最後に、あなたに

+0

私が正しく理解すれば、どの製品が同じ「カテゴリ」に入るのかを決定する条件は、最初の14列の値を一致させることです。次に、14列の可能なすべての組み合わせでリストをフィルタ処理し、日付(昇順)でソートして、一番上の日付を選択するマクロを提案します。しかし、あなたはそのようなマクロを書く必要があります。それを記録する方法はありません。しかし、録音は基本的な操作に役立ちます –

+0

はい、それは、値が最初の14のカテゴリーで同じであれば、日付を比較し、最も古いものだけを選びます。 OK私は例を記録してマクロを試し、まずfilterigを試してから、最も古い日付を選びます。ありがとう – lillinoa

+0

IF(AND(...))を使用してVBAと数式を組み合わせ、列の一致または不一致に応じて1または0のレンダリング値を作成しました。私はそれが今働いていると思うthks :) – lillinoa

答えて

1

をあなたの助けのためにたくさんの感謝: レコードフィルタリングのマクロは次のようになります。

ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Clear 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range(_ 
     "Tableau1[Car]") _ 
     , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range("Tableau1[Model]"), SortOn:= _ 
     xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range("Tableau1[Motor]"), SortOn:= _ 
     xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range("Tableau1[Carburant]"), SortOn:= _ 
     xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet2").ListObjects("Tableau1").Sort.SortFields. _ 
     Add Key:=Range(_ 
     "Tableau1[Techno]"), SortOn:= _ 
     xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

...などです!

次に、新しい列を作成して、1または0のいずれかがすべての行が式IF(AND(C2=C3;D2=D3; ... ; O2=03);1;0)の式と同じであると判断し、最終的に最後の列に式を入力して0〜この行の日付は、1900年1月1日の日付が表示されない場合は考慮に入れなければなりません。その後、この行をフィルタリングし、1900年の日付を取って、私は欲しかったものを得ました。

私はそれがはっきりしていることを望みます。

関連する問題