-1

簡単な質問ですが、答えが見つかりません。初級者レベルの知識だけで扱いにくいエクセルのビジュアルベーシックマニュアルを探すのはとてももどかしいと思います。助けてください。

大量の株式取引からのデータがあります。それらは次の形式で返されます。

https://my.syncplicity.com/share/jjuqll2r00/Screen_Shot_2013-05-20_at_23.02.07

画像については上のリンクをクリックしてください - 直接投稿する評判のない初心者です :)

うまくいけば、市場とラベル付けされた列と、金などのさまざまな金融資産のリストがあることがわかります。

マーケット列の下の同じエントリを持つすべての行を一致させ、行を同じ色に着色する必要があります。また、そのアセットのデータを集計した新しいテーブルを作成し、それを他のアセットと比較して円グラフでプロットしたいと考えています。

問題は、さまざまなアセットの数が無制限になる可能性があるため、コードを直接使用できないことです。つまり

dim rge as range

rge = activesheet.usedrange.find("Market", lookat:=xlpart)
rwnbr = rge.end(xldown).row
colnbr = rge.column

for i = 1 to rwnbr
 if cells(i,colnbr).value = "*Gold*" then cells.(i,colnbr).interior.colorindex = 3
 end if
 if ..................... = "*Xstrata*" then .......................
 end if
next i

どのアセットが一致する必要があるかをExcelに伝える必要があるため、上記は役に立ちません。行が異なるアセットである場合は行の色が異なるように自動化する必要があります(異なるアセットがいくつでもある可能性があるため、それぞれに別々の色を選択する必要があります)。次に、その資産の取引の新しい要約テーブルを作成して、全体的な利益/損失を表示し、それを円グラフに入れる必要があります。

これは、VBA をコーディングして、選択した同一の (ただし最初に通知されていない) データを操作する方法を理解すれば、簡単なはずです。

助けてください!

ありがとうございました。

4

2 に答える 2

0

命名範囲で失敗するコード:

Dim ran9e As Range
Set ran9e = ActiveSheet.UsedRange
Range("A1").Select
Sheets.Add.Name = "Summary"

ActiveWorkbook.PivotCaches.Create(xlDatabase, ran9e, xlPivotTableVersion14).CreatePivotTable tabledestination:=Sheets("Summary"), _
tablename:="PivotTable1", defaultversion:=xlPivotTableVersion14
Sheets("Summary").Select
Cells(3, 1).Select
于 2013-05-21T18:34:48.930 に答える
0

スクリーンショットのように、データが既に Market 列でソートされていると仮定すると、次のような色の書式設定を行うことができます。

Sub ColorMyTable()
Dim rng as range 'column range
Dim r as Long 'row iterator
Set rng = Activesheet.Range("E2",Range("E2").End(xlDown))

'## Assign some color to the last cell in this column
rng.Cells(1).Interior.ColorIndex = 39

For r = rng.Rows.Count to 1 Step - 1
    With rng.Cells(r)
    'Check to see if the cell is the same value as the one beneath it
        If .Value = .Offset(1, 0).Value Then
            '## Make them the same color
            .Offset(1,0).Interior.ColorIndex = .Interior.ColorIndex

            '
        Else:
            '## Code to apply a new semi-random color to the next row
            ' , when the values don't match.
            .Offset(1, 0).Interior.ColorIndex = .Offset(1,0).Row Mod 55

        End If
    End With
Next
End Sub 

これは、事前に割り当てを行わずに色を割り当てる方法として、私が考えることができる最も簡単で、おそらく最も醜い方法です。

色が既に使用されているかどうかのチェックはありませんが、これで 55 色が表示されるはずです。

残念ながら、事前にどの色を使用するかを考えていない限り、色を割り当てる本当に簡単な方法は思い浮かびません。しかし、以下にいくつかのより複雑な方法を示します。

  • .TintAndShadeたとえば、単一の色の long 値を使用してから、列にある一意のアセットの数に基づいて特定の係数を適用できます。たとえば、次のように: Excel の列にグラデーションの色を割り当てる方法は?
  • 同様に、いくつかの色をパブリック変数として割り当てるか、カラー テーマの組み込み定数を使用し (Excel 2007 以降を想定)、VBA 関数を使用してこれらの色を回転させ、.TintAndShade必要に応じて を適用することもできます。上記と同じですが、複数の色を使用するための微調整が可能です。
  • 乱数ジェネレーターを使用して、色の値を割り当て、使用した色をコレクションに保存し、重複した色をチェックする (必要に応じて新しい色を強制する) などを行うことができます。
于 2013-05-21T02:14:48.867 に答える