No.5
- 回答日時:
No.2です。
エラーになってしまいましたか。
>おそらく打ちミスは無いと思います
ご自身でコードをもう一度手入力されているのですかね?
そうであればこの画面上からコードをコピー&ペーストしてみてください。
尚、
>lastCol = UsedRange.Columns.Count
でなくても
>lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
でも良いと思います。m(_ _)m
No.4
- 回答日時:
No.2です。
エラーになってしまいましたか。
>おそらく打ちミスは無いと思います
ご自身でコードをもう一度手入力されているのですかね?
そうであればこの画面上からコードをコピー&ペーストしてみてください。
尚、
>lastCol = UsedRange.Columns.Count
でなくても
>lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
でも良いと思います。m(_ _)m
tom04様回答ありがとうございます。
VBA自体を社内PCでやっているのですが、セキュリティの問題でネットが開けない状態でして、コピーが取れないのです。
書き換えて見ましたが、今度は型が一致しないと出てしまいます…
No.3
- 回答日時:
No1です
勝手に解釈して「A,B列ともに同じ値の行を同じ色に着色したい」ということかと仮定しました。
No2様もご指摘ですが、色数が何色必要なのか不明なので、適当に増減可能なようにしてみました。
Sampleでは、ひとまず6色としていますが、列挙を増やせばそれだけ増加します。
定義された色数が不足した場合は、最初の色に戻って使用します。
ご提示の方法とはまったく異なる方法で行っていますので、ご参考までに。
D,E列を作業用に利用していますので、既にデータが存在するような場合は作業列を移動すればよろしいでしょう。
Sub Sample_F14()
Dim colP, n As Long, rng As Range, c As Range
'// XlRgbColorまたはRGB値を指定色数分列挙
colP = Array(rgbBisque, rgbKhaki, rgbPaleGreen, rgbPaleTurquoise, rgbLavender, rgbPink)
n = UBound(colP) + 1
Set rng = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
rng.Offset(, 3).FormulaLocal = "=IF(COUNTIFS(A$2:A2,A2,B$2:B2,B2)=1,COUNT(D$1:D1),"""")"
rng.Offset(, 4).FormulaLocal = "=INDEX(D:D,AGGREGATE(15,6,ROW(A$2:A2)/(A$2:A2=A2)/(B$2:B2=B2),1))"
For Each c In rng.Offset(, 4)
If IsNumeric(c.Value) Then c.Offset(, -4).Resize(, 2).Interior.Color = colP(c.Value Mod n)
Next c
rng.Offset(, 3).Resize(, 2).Clear
End Sub
おぉ!!ありがとうございます!!
実際に打ち込んでみたのですが、n=UBound(colP)+1の所で配列がありませんと言われてしまいます…
No.2
- 回答日時:
こんばんは!
すべての組み合わせを表示する場合、色の指定が面倒ですね。
どこかの列に色サンプルを作成しておき、順にその色で塗りつぶす!という方法だと色指定が簡単だと思います。
ただ、今回は色の件は無視してデータ表示のみにしてています。
VBAになりますが一例です。
(お示しの画像通りの配置だとします)
Sub Sample1()
Dim myDic As Object
Dim i As Long, k As Long, cnt As Long
Dim lastRow As Long, lastCol As Long
Dim myStr As String
Dim myKey, myAry
Set myDic = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
lastCol = UsedRange.Columns.Count
'//▼D列以降のデータを一旦消去//
If lastCol > 3 Then
Range(Cells(1, "D"), Cells(lastRow, lastCol)).Clear
End If
'//▼ココから操作//
For i = 2 To lastRow
myStr = Cells(i, "A") & "_" & Cells(i, "B")
If Not myDic.exists(myStr) Then
myDic.Add myStr, ""
End If
Next i
myKey = myDic.keys
For i = 0 To UBound(myKey)
cnt = cnt + 1
myAry = Split(myKey(i), "_")
With Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:=myAry(0)
.AutoFilter Field:=2, Criteria1:=myAry(1)
.SpecialCells(xlCellTypeVisible).Copy Cells(1, cnt * 3 + 1)
End With
Next i
ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True
Set myDic = Nothing
End Sub
※ A・B列の出現順に表示されます。m(_ _)m
返信遅れてすみません!!例文ありがとうございますm(*_ _)m試しに打ってみたのですが、lastCol=UsedRange.Columns.Countの所でUsedRangeの変数が定義されていないと出てくるのですが、どうしたらいいでしょうか。(おそらく打ちミスは無いと思います…)
No.1
- 回答日時:
こんにちは
なさりたいことが正確にはわかりませんが(質問者様はわかっているでしょうから)、ご質問文に記載の手順でできると思いますよ。
>何か良い方法は無いでしょうか
(質問文によれば)オートフィルタで抽出し、そのセル(範囲)に背景色を設定。
という手順でよいのではないでしょうか?
(オートフィルタを使わずにループで抽出という方法も考えられますが…)
VBAとのことですから、ほとんどそのままをVBA化すれば宜しいでしょう。
何らかの元になるコードが欲しいのであれば、「マクロの記録」を取ればほぼそのままのものを得ることができます。
返事遅れてすみません!!なるほど…実際にマクロ記録を試してみましたがこんな機能があったとは…
ありがとうございます!!m(*_ _)m今回に限らずに今後も使えそうですね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Visual Basic(VBA) Excel VBAでのオートフィルターについて教えてください。 日付データからフィルターで今日を起点 1 2022/07/26 22:10
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Outlook(アウトルック) Excel表のメールアドレスリストからoutlookの宛先を設定、メールを送信する方法 2 2022/09/16 05:29
- Visual Basic(VBA) Vba UserFormを前面に出す方法を教えてください 1 2023/08/17 11:08
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) Excel Powerクエリーの質問、行数指定は可能でしょうか? 2 2022/08/22 12:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba SelStart、SelLen教えてく...
-
現在のブックを閉じないで、マ...
-
ExcelVBA シート名を複数セルか...
-
ユーザーフォームに別シートか...
-
【VBA】マクロの入ったファイル...
-
VBA listBoxから
-
VBAコンボボックスで選択した値...
-
VBA初心者 Ctrl+での操作、ボタ...
-
VBA実行後に元のセルに戻りたい
-
Excel-VBAのmsgBox()の不思議
-
エクセルのマクロについて教え...
-
FileCopy時のエラー
-
Excelのマクロでワードのテキス...
-
【ExcelVBA】インデックスが有...
-
Outlookの「受信日時」「送信者...
-
VBAで各列の"+"と"o"の合計数を...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコードを教えてください
-
【ExcelVBA】インデックスが有...
-
ExcelVBA シート名を複数セルか...
-
エクセルvbaについて
-
エクセルのマクロについて教え...
-
【VBA】マクロの入ったファイル...
-
VBA UserFormからの転記で
-
エクセルVBAの配列について
-
Excelで「Ctrl+c」、「Ctrl+v...
-
VBAコードについて教えてくださ...
-
ExcelのVBAコードについて教え...
-
Excel マクロについての相談
-
VBAで質問があります
-
VBAコードについて
-
【ExcelVBA】VBA実行でダイアロ...
-
Excel関数またはVBAでの質問に...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
Outlookの「受信日時」「件名」...
おすすめ情報