fumufumu_2006のプロフィール
- ベストアンサー数
- 163
- ベストアンサー率
- 66%
- お礼率
- 50%
- 登録日2006/05/16
- エクセル重複チェックをしながら追記
エクセル2003 「Sheet5」のデータを「Sheet6」に重複チェックをしながら追記していきたいです。 「Sheet5」に他のソフトから出力したデータがあります。 「Sheet6」には履歴を残すために出力したデータを追記していきます。 そこで、重複チェックをしながら追記したいです。 重複チェックは【請求先コード】【日付】の2つでしたいです。 私が作成したものは【請求先コード】のみのチェックです。 日付のデータ型を「Date」にして、どう記述すればよいのか分からずに質問しました。 よろしくお願い致します。 「Sheet5」1行目は見出し A列・・・・・・・・・・・・・B列・・・・・・・・・・・C列 請求先コード | 請求先名 | 日付 1000 A社 2011/1/20 1010 B社 2011/1/20 1012 C社 2011/1/20 「Sheet6」1行目は見出し A列・・・・・・・・・・・・・B列・・・・・・・・・・・C列 請求先コード | 請求先名 | 日付 1000 A社 2011/1/10 1000 A社 2011/1/20 1010 B社 2011/1/10 1010 B社 2011/1/20 1012 C社 2011/1/10 1012 C社 2011/1/20 1015 D社 2011/1/10 1010 E社 2011/1/10 Sub test1() Dim ws1 As Worksheet, ws2 As Worksheet Dim x As Long, y As Long, z As Long, i As Long Set ws1 = Sheets("Sheet5") z = Range("A1").End(xlDown).Row Set ws2 = Sheets("Sheet6") x = ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1 For y = 1 To z If ws1.Cells(y, "A").Value = "" Then Exit For Next ws1.Cells(2, "A").Resize(y - 1, z).Copy ws2.Cells(x, "A").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False With Worksheets("Sheet6") 'A列とC列を基準に昇順で並び替えます Sheets("Sheet6").Select Range("A1").Select Range("A:C").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range( _ "C2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _ :=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:= _ xlSortNormal, DataOption2:=xlSortNormal '請求先コードにして重複チェック For i = ActiveSheet.Range("A65536").End(xlUp).Row To 2 Step -1 With Cells(i, "A") If .Value = .Offset(-1).Value Then .EntireRow.Delete End If End With Next End With End Sub
- ベストアンサー
- Visual Basic
- wai-girl
- 回答数2
- ExcelのVBAでAccess操作です
タイトルの操作で、エクセルシートのセルのコード番号をアクセスの データベースのIDのフィールドから検索し、アクセスのその行を削除または、修正をしようとしています。 アクセスのIDのフィールドには重複するものは存在しません。 現在For~Nextで一行づつ見る方法まできましたが、レコード数が増えた場合かなりの時間がかかります。 エクセルのVBAの記述で TROW=検索範囲.Find(検索文字列,Lookat:=xlWhole).Row に換わる記述はどういうものがあるのでしょうか? エクセルのVBAで処理をしたいのですがよろしくお願いします。 また、For~Nextの記述の場合、変更しようとするとLockedがYesになっているため変更できない旨のメッセージが出ます。 アクセスのテーブルにロックがかかっている意味だと思うのですが、 Unprotectのような記述もあれば教えていただきたいと思います。 アクセスは全く初めてで壁にぶち当たっています。 どうぞ宜しくお願いします。
- 「変数の宣言」 が違うのでしょうか?
Excel 2002 です 下記コードはなんとか動作するんですが、 例えば、「Cells(1, 8).Value」が「2」の時、 「"G:G"」列の「12」にも動作してしまうので、 必ず、「2」だけに動作させたいんですが、 どのように記述すればよいでしょうか? 「Cells(1, 8).Value」と「"G:G"」列は、1~20までの数字しかありません。 他に、おかしな記述箇所がありましたら、教えて下さいませ。 何卒よろしくお願い致します。 ---------------------- Sub 一セルずつ貼付ける() Dim fWord As Integer, fAdd, c fWord = Cells(1, 8).Value With Workbooks("ああ.xls").Worksheets(1).Range("G:G") Set c = .Find(fWord, LookIn:=xlValues) If Not c Is Nothing Then fAdd = c.Address Do c.Offset(0, 5).Copy Worksheets(Worksheets.Count).Range("D65536").End(xlUp). _ Offset(1, 0).PasteSpecial Paste:=xlAll, _ Transpose:=True Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> fAdd End If End With End Sub
- ベストアンサー
- オフィス系ソフト
- oshietecho-dai
- 回答数2
- エクセルマクロでブック名を検索できない
エクセルマクロで今開いているブック以外のブック名を取得して編集するマクロを作っていますが、一度他のブックを開かずにエラーメッセージ"価格を検索したいブックを開いて下さい。"を表示させると以降開いたブック名を取得出来ません。 For Each wb In Application.Workbooks s = wb.Name If s <> ActiveWorkbook.Name Then Exit For Else MsgBox "価格を検索したいブックを開いて下さい。" Exit Sub End If Next オブジェクトの解放など調べてみたのですが、初心者でよく解らず困っています。どなたか教えて下さい。
- ベストアンサー
- オフィス系ソフト
- noname#113614
- 回答数2