Excel - 特定の基準に基づくセルへのマクロコピー

問題

私は立ち往生しています。 誰かが今日私を助けてくれることを願っています。 1400行のExcelスプレッドシートがあります。 最初の3行は関係ありません(見出し)。 $ tringコンテンツを含むセルが3つあります(B:C:D)。 私がする必要があるのは、非NULL値についてB列とD列を特に調べることができるマクロを作成することです。 このスプレッドシートには同じ値を持つ必要がある複数のセルがあります。 列BとDを比較し、NULL以外の値で見つけなければなりません。 また、列Bもまた同じ(ループ)(セルの内容は同じだが行が異なる)同じ場合、列DはNULL値(内容がない)になります。 このCol Dに、Col BとDの内容を含む最初のレコードと同じ内容を入力する必要があります。 私の例では、値はハードコードされています、私は他にそれを行う方法がわからない。 私は非常に道に迷っています、そして私はこれを完成するためにいくらかの助けが必要です。 これは私が持っているものです。

 Sub _MacroUser10()Set I = Worksheets( "Sheet2")Dim d Dim jd = 1 'ループカウンタj = 4'は見出しがアクティブセルまで続くため、4行目から開始します(I.Range( "B"&j)= " User Portfolio Group ")とActiveCell(I.Range(" D "&j null)) 'ループの場合I.Range(" B "&j)=" User2010 "の場合'セルのタイトルはUser2010となります。 .Range( "D"&j)= ""それから、これはDの中でNULL値を見つけることになっています。d = d + 1 End If i.Rows(d).Value = I.Rows(j).Value End If j = j + 1ループエンドサブ 

概して。 セルB $のコンテンツとセルD $のコンテンツを検索する必要があります。 両方の場所にコンテンツを含む1行があります。 次に、D $に値がないB $と一致する他のすべての一致行を見つける必要があります。 欠損値を非NULL D $からNULL D $に追加する必要があります。

溶液

塗りつぶされた行が空白の行よりも前に表示されることが常に当てはまる場合は、辞書オブジェクトを使用できます。 そのために

  • 最初の行を最後までループします
  • 両方のセルが空でない場合は、キーとしてBとDの値を、値としてCの値を組み合わせます。
  • 行をたどりながら、まずそのキーが辞書にあるかどうかを確認し、そうであれば、そうでなければ辞書に追加された値があります。

 'dicオブジェクトを作成するにはSet dicMyDic = CreateObect( "Scripting.Dictionary")'これで、キーの値はstrKey = B1& "|"になります。 &D1 'Dの値が空白かどうかを確認' dic IFに値を追加するNot(dicMyDic.Exists(strKey))その後dicMyDic.Add Key:= strKey、Item:= val 'dic IFから値を取得する(dicMyDic.Exists(strKey))次にval = dicMyDic(strKey) 

このヒントを寄せてくれたrizvisa1に感謝します。

前の記事 次の記事

トップのヒント