2017-06-07 11 views
0

enter image description here識別その後、VBAとのStackOverflowへ

こんにちはみんな、イム新しい別の列の位置や数を出力するポジションの数。現在、私は収集したデータを要約するプロセスを作成するためにVBAを使用しようとしています。上記の写真は、私が問題に直面している長いマクロプロセスの一部です。私は列 "A"(新しい位置は時間をかけて追加することができます)の一意の位置の数を見つけ、列 "J"の位置列に固有の位置を出力する必要があります。その後、列「K」では、ユニークなランクの数を数える必要があります。

今のところ、私は位置を見つけるために次のコードを持っています。

Sub test() 
Dim Manager as Integer 
Sheets("Sheet1").Select 
Manager = Application.WorksheetFunction.CountIf(Range("A:A"), "Manager") 
'Output the Manager value anywhere as require 
End Sub 

しかし、ユニークな位置を特定し、ユニークな位置を数え、その位置の横にユニークな位置の数を出力することには挑戦しています。これはVBAでも可能ですか?

本当にありがとうございました

+0

「ユニークなポジション」とは何を意味するのでしょうか?スクリーンショットに希望する結果を入力し、結果につながるロジックを説明します。 - 一意の番号を持つ列を追加し、「最小」を集計としてピボット・テーブルを作成する方法はありますか?とにかく、あなたが達成したいことは明確ではありません。 **これらの詳細を提供するためにあなたの質問**を編集してください。コメントに詳細を投稿しないでください。 – teylyn

+0

ようこそ。予想される結果のスクリーンショットを含めることができればうれしいでしょう。もちろん、それはVBAで可能です。 – UGP

答えて

0

私はあなたが物事をVBAなしで行うことができることを知らないかもしれないので、あなたが上に複雑なことをしてVBAを求めるかもしれ感じます。私がこの質問を理解するには、列Aの各位置のカウントが必要です.VBAでホイールを再発明することなく、ピボットテーブルで簡単に行うことができます。ピボットテーブルは、従来の式よりはるかに強力で、はるかに高速で、あなたが思い付くVBAよりもはるかに高速です。

このスクリーンショット考えてみましょう:私は挿入>表(またはCtrl-T)を使用してExcelの表オブジェクトに列Aになってきたので、データを簡単に成長することができますが、それはオプションです

enter image description here

を。

私はピボットテーブルを挿入し、位置を行領域に引っ張り、値領域に再び引っ張って集計します。

VBAはありません。

これが必要なものでない場合は、質問を編集して明確にしてください。それ以外の場合は、これを回答としてマークしてください。

0

は、最初の「温度」シートを作成するには、以下のこのVBAを実行します。

Sub ExtractUnique() 
    Dim sh As Worksheet 
    Dim shTemp As Worksheet 
    Dim LastRow As Long 

    Set sh = ActiveSheet 'or change to your sheet name Sheets("your sheet") 
    LastRow = sh.Cells(sh.Rows.Count, "A").End(xlUp).Row 

    'temporary sheet 
    Set shTemp = ThisWorkbook.Sheets("Temp") 'MAKE SURE YOU CREATE 'Temp' sheet first!!! 

    'copy your positions to temporary sheet for manipulation 
    sh.Range("A1:A" & LastRow).Copy 
    shTemp.Range("A1").PasteSpecial xlValues 
    Application.CutCopyMode = False 

    'remove duplicates 
    shTemp.Range("A1:A" & LastRow).RemoveDuplicates Columns:=Array(1), Header:=xlYes 

    'copy it back to J1 of your original sheet 
    'first check the last row of unique position list 
    LastRow = shTemp.Cells(sh.Rows.Count, "A").End(xlUp).Row 

    shTemp.Range("A1:A" & LastRow).Copy 
    sh.Range("J1").PasteSpecial xlValues 
    Application.CutCopyMode = False 

    'set the formula to count the number of positions 
    sh.Range("K2:K" & LastRow).Formula = "=COUNTIF(A:A,J2)" 

    End Sub 
関連する問題