![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.4ベストアンサー
- 回答日時:
横から失礼します。
・A列の非重複データをB列に、C列に非重複データをD列に展開したい
・データが、1~6のものだけを転記したい
これを踏まえてやってみました。Dictionaryオブジェクトの活用です。
■c:列番。A列とC列を処理するので、Step 2 でループ
■ r : 行番。データの入っているところまで縦に下りていく。Do Loop部分。
■Suchi : 数値。それぞれのデータを入れる変数
・おおまかな流れ
① Dictionaryオブジェクトを設定
② 各データのうち、1以上かつ6以下かつ、Dic に既に存在されていないものを
Dic に追加していく
③ 全データのループが終わったら、Dic のキーを、Mykeys(配列)に格納
③ その後、Mykeys の各要素を吐き出す
-------------------------------------------------------------------
Sub aaa()
Dim Dic As Variant
Dim r As Integer, c As Integer
Dim Suchi As Single
Dim Mykeys As Variant
For c = 1 To 3 Step 2
Set Dic = CreateObject("Scripting.Dictionary")
r = 1
Do While Cells(r, c).Value <> ""
Suchi = Cells(r, c).Value
If Suchi >= 1 And Suchi <= 6 And _
Not Dic.exists(Suchi) Then
Dic.Add Suchi, Suchi
End If
r = r + 1
Loop
Mykeys = Dic.keys
For r = 0 To Dic.Count - 1
Cells(r + 1, c + 1).Value = Mykeys(r)
Next r
Set Dic = Nothing
Next c
End Sub
---------------------------------------------------
c のループ範囲とか、Suchi の条件設定など、適宜アレンジください。
No.7
- 回答日時:
>元データは A,C,E,G,I,K,M,O の 8列ありまして
c のループを c=1 To 15 Step 2
とすれば良いです。
なお、D列の転記のみがうまくいってる、ということですが、B列にもいきませんかね?
わたしの手元のダミーデータでは正常でしたけどね。
なんか問題あればまた教えてください。
No.6
- 回答日時:
No.2・3です。
>転記する数字の範囲を1.000~6.000のものに限定する、などと・・・
というコトは「重複するレコードは無視する」という操作だけでなく
オートフィルタも必要になってきますね。
Sheet2を作業用のSheetとして使用していますので、Sheet2は使っていない状態にしておいてください。
>これをボタンクリックでやりたいのですが・・・
なので、Sheet1にコマンドボタンを配置しているとします。
まず、標準モジュールに↓のコードをコピー&ペーストしてください。
Sub Sample2()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
.Range("D:D").ClearContents
.Rows(1).Insert
.Range("C1") = "ダミー"
.Range("C:C").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
wS.Range("A1").AutoFilter field:=1, Criteria1:=">=1", Criteria2:="<=6", Operator:=xlAnd
Range(wS.Cells(1, "A"), wS.Cells(lastRow, "A")).SpecialCells(xlCellTypeVisible).Copy .Range("D1")
wS.AutoFilterMode = False
wS.Range("A:A").Clear
.Rows(1).Delete
End With
End Sub
そしてコマンドボタンのコードを↓にします。
Private Sub CommandButton1_Click()
Call Sample2
End Sub
こんな感じではどうでしょうか?m(_ _)m
No.5
- 回答日時:
通りがかりですが、エクセルには重複の削除 の機能があります。
操作
A列を、コピー、B列に張り付け
B列を選択して、リボン データ 中央近くにある 重複の削除 をクリック
ウィザードに従って、B列のみ対象範囲にして
OK押せば、完了です。
マクロが必要であれば、マクロの記録でコードを取得してみてください。
No.3
- 回答日時:
No.2です。
C列のデータを重複なしにD列に表示したい!というコトのようですね。
対象列の1行目に仮の「項目」を入れてやればOKですので、
>Range("A1") = "ダミー"
を
>Range("C1") = "ダミー"
としてみてください。m(_ _)m
No.2
- 回答日時:
こんにちは!
項目行はなくて、データは1行目からあるのですね?
一例です。
Sub Sample1()
Rows(1).Insert
Range("A1") = "ダミー"
Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=Range("B1"), unique:=True
Rows(1).Delete
End Sub
※ 1行目が項目行であれば
上記コードの1行だけで済みます。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBAでセル内容を別の列の最下行に転記したい 2 2022/11/29 08:47
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Visual Basic(VBA) Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。 3 2023/03/19 18:31
- Excel(エクセル) エクセルのマクロ作成について教えてください 5 2023/02/20 00:39
- Visual Basic(VBA) 【マクロ】表への繰り返し転記について 1 2022/11/19 16:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
複数の条件に合う行番号を取得...
-
エクセルで1列に500行並んだデ...
-
Excelで2行単位のソートの出来...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
Excelの30個ずつの平均値の出し方
-
Excelで2つのデータの突合せを...
-
Countifよりも早く重複数をカウ...
-
本日の日付を超えているものを...
-
【VBA】A列にある連続したデー...
-
マクロ コピー貼り付けと重複デ...
-
エクセルのマクロ Range("A1")...
-
エクセル 複数の文字列を別シ...
-
エクセルVBA C列に特定の文字列...
-
Excel 列データのランダムな並...
-
エクセルで、特定の文字を含む...
-
EXCELでの重複データカウント方...
-
エクセルデータの比較をしたい。
-
エクセル2003でマクロでマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで1列に500行並んだデ...
-
エクセルで日付から日にちを削...
-
Excelで2つのデータの突合せを...
-
Excelで2行単位のソートの出来...
-
複数の条件に合う行番号を取得...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
Countifよりも早く重複数をカウ...
-
Excelの30個ずつの平均値の出し方
-
VBA 数式を最終行までコピー
-
エクセルVBA C列に特定の文字列...
-
エクセルで横並びの複数データ...
-
エクセル2016にて、行挿入&コピ...
-
【Excel】小計単位で並べ替えを...
-
VBA 大きなtxtテキストファ...
-
500行の中から、多い順に抽出す...
-
エクセル~空白のセルのある行...
-
エクセルで1つの会社名に対して...
-
【エクセル】1列内に複数ある同...
-
Excel VBA 空白セル以下のデー...
おすすめ情報
回答ありがとうございます。
それでは、A列をB列に、C列をD列に転記してみたのですが上手く行きません。
コードは単純に
Rows(1).Insert
Range("A1") = "ダミー"
Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=Range("B1"), unique:=True
Rows(1).Delete
Rows(1).Insert
Range("A1") = "ダミー"
Range("C:C").AdvancedFilter Action:=xlFilterCopy, copytorange:=Range("D1"), unique:=True
Rows(1).Delete
としてみたのですが、どこがいけなかったのでしょうか、お手数ですが教えて頂けませんでしょうか
よろしくお願い致します
再度の回答ありがとうございます。
お陰様で、ばっちり出来ました、ありがとうございます!
それで、不躾なお願いで恐縮ですが、一点教えて頂けませんでしょうか。
列の最終行に正体不明の文字があってそれも転記してしまうんです。
それで、転記する数字の範囲を1.000~6.000のものに限定する、などと出来ますでしょうか?
お手数をお掛けしますが、教えて頂けませんでしょうか。
よろしくお願いいたします。
訂正いたします。
転記自体は上手く行っているのですが、空白(に見える)セルを転記していて、その正体が解らない為難行しています><
1から6の数字の値のみを転記する事って出来るでしょうか?
お手数ですが教えて頂けませんでしょうか。
よろしくお願いいたします。
こんばんは、再度の回答ありがとうございます。
実行してみたのですが、D列への転記のみが上手く行ってる感じです。
実は、元データは A,C,E,G,I,K,M,O の 8列ありまして、以前教えて頂いた程度の改変なら自分で出来たのですが、今回はそうは行かないようです。
大変、恐縮ですが、教えて頂けませんでしょうか。
よろしくお願いいたします。