hallo-2007 の回答履歴
- 列の任意のセルに値入力時にマクロ起動
ExcelのVBAについて質問です。 2列目の任意のセルに値を入力した際にマクロを起動したい場合、どのようにソースを記述すればよろしいでしょうか? たとえば2列目の任意のセルに入れた値に基づいた値を3列目の同じ行に返す場合などです。 ご教示お願いします。
- ベストアンサー
- その他MS Office製品
- kurogatuo
- 回答数2
- VBAでの構築の質問
VBAの初心者ですが、データの抽出をしたいと考えています。 フォルダの中に、複数のテキストファイル形式のデータがあり、 その中にあるファイル毎の一部データのみ抽出できないかと考えております。 元データ(1)(テキストファイル形式) 10行目にあるデータ A TOKYO 20行目にあるデータ 100 200 1000 2000 (データの間には、スペースがあります。) 元データ(2)(テキストファイル形式) 10行目にあるデータ B Fukuoka 20行目にあるデータ 300 400 3000 4000 (データの間には、スペースがあります。) 編集後のデータは、それぞれのテキストデータ ・10行目データの2番目の抽出 ・20行目データの2番目の抽出 ・20行目データの4番目の抽出 を抽出できないかと考えています。 編集後データ(エクセルファイル形式に出力)は、下記のような感じできないかと考えてます。 (A列) (B列) (1行目)TOKYO Fukuoka (2行目)200 400 (3行目)2000 4000 皆さんからのご回答、 よろしくお願いいたします。
- 締切済み
- Visual Basic
- Ledondo
- 回答数2
- エクセル マクロ 方法
以下のようなマクロを作りましたが、帳票を印刷すると1枚印刷されます。 ですが、この帳票がA5サイズの決まりがあり、かつプリンタがA4しか用紙を入れることができないので、 そのため、一度にA5サイズの帳票を2枚合わせた形で印刷をさせたいと考えています。 A4用紙に左側(名簿の1番目)右側(名簿の2番目) 次も、名簿の3番目・4番目と連続印刷をしたいのですが、どのようにすれば良いのでしょうか。 勉強不足で申し訳ございませんが、ご指南くださいますようお願いいたします。 Sub 帳票印刷() Dim LastRow As Long Dim i As Long Dim myNo As Variant With Worksheets("名簿") LastRow = .Cells(Application.Rows.Count, "A").End(xlUp).Row For i = 2 To LastRow myNo = .Range("A" & i).Value With Worksheets("印刷用") .Range("C4").Value = myNo .PrintPreview .PrintOut Copies:=1, Collate:=True End With Next i End With End Sub
- 締切済み
- Visual Basic
- waki1982
- 回答数2
- エクセル マクロ 方法
以下のようなマクロを作りましたが、帳票を印刷すると1枚印刷されます。 ですが、この帳票がA5サイズの決まりがあり、かつプリンタがA4しか用紙を入れることができないので、 そのため、一度にA5サイズの帳票を2枚合わせた形で印刷をさせたいと考えています。 A4用紙に左側(名簿の1番目)右側(名簿の2番目) 次も、名簿の3番目・4番目と連続印刷をしたいのですが、どのようにすれば良いのでしょうか。 勉強不足で申し訳ございませんが、ご指南くださいますようお願いいたします。 Sub 帳票印刷() Dim LastRow As Long Dim i As Long Dim myNo As Variant With Worksheets("名簿") LastRow = .Cells(Application.Rows.Count, "A").End(xlUp).Row For i = 2 To LastRow myNo = .Range("A" & i).Value With Worksheets("印刷用") .Range("C4").Value = myNo .PrintPreview .PrintOut Copies:=1, Collate:=True End With Next i End With End Sub
- 締切済み
- Visual Basic
- waki1982
- 回答数2
- エクセル 立体 奥行 まくろ
お世話になっております。 エクセルにて x、y、z 軸のあるグラフを作成したく色々調べたのですが難しそうです。 (交点を中心に大きな豆腐と小さなこんにゃくを比較するような図) シェイプなどを使って立方体をマクロで作成することは可能でしょうか。 エクセル画面上 縦 a 横 b の場所を起点に x、y、z の値で直方体が作れるような簡単なマクロってありますか。 ご教授願いまする。 (エクセル2010 マクロ初心者)
- ベストアンサー
- オフィス系ソフト
- mogurayama
- 回答数2
- Visual Basic Editor 開き
Visual Basic Editorについて。 エクセル2007画面から開発→Visual Basicと、毎回開いていますが、 シートを右クリックして、コードの表示 とでは、何か違うのでしょうか? VBA初心者です。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- noname#191254
- 回答数3
- Accessを使ってみたい。
Accessの使い方を学んだので、使ってみたいのですが、 なにを管理しようか迷ってます。 商売もしてないので、顧客管理・売上管理もないしー。 図書館司書やレンタルショップの店員でもないので、貸し借りを入力することもないし・・・。 実際に使えそうなものってないですかー? どしどし教えてください。
- 締切済み
- その他MS Office製品
- kiiro-witzy
- 回答数4
- accessでこんなフォームを作りたい
初心者です。Access2000です。 フォームに窓を設置してバーコード入力で そのバーコードの数値と完全一致するレコードを入力窓の下に表示したいです。 一つのバーコードでレコードは最大5つヒットします。 明後日までに作らなければいけないのですが どうか助けていただけないでしょうyか。
- ベストアンサー
- その他MS Office製品
- yuukiyuuki
- 回答数2
- マクロを簡潔にしたいので教えてください。
Sub 記入() Dim testno As String Dim testrow As Long Dim basedata(1 To 10) As String Dim weight(1 To 16) As Double Sheets("sh3").Select '(1) testno = Range("B23").Value 'No. Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sheet3").Select Cells(3, 1) = testno For i = 1 To 10 Cells(3, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(3, i + 11) = weight(i) Next i Sheets("sh3").Select Erase basedata Erase weight '(1) testno = Range("B24").Value 'No. Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sh3").Select Cells(4, 1) = testno For i = 1 To 10 Cells(4, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(4, i + 11) = weight(i) Next i Sheets("sh3").Select Erase basedata Erase weight この間同様文12個あり '(1) testno = Range("B37").Value If testno = "" Then End End If Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sh3").Select Cells(17, 1) = testno For i = 1 To 10 Cells(17, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(17, i + 11) = weight(i) Next i End Sub
- ベストアンサー
- その他MS Office製品
- noname#178407
- 回答数6
- マクロを簡潔にしたいので教えてください。
Sub 記入() Dim testno As String Dim testrow As Long Dim basedata(1 To 10) As String Dim weight(1 To 16) As Double Sheets("sh3").Select '(1) testno = Range("B23").Value 'No. Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sheet3").Select Cells(3, 1) = testno For i = 1 To 10 Cells(3, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(3, i + 11) = weight(i) Next i Sheets("sh3").Select Erase basedata Erase weight '(1) testno = Range("B24").Value 'No. Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sh3").Select Cells(4, 1) = testno For i = 1 To 10 Cells(4, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(4, i + 11) = weight(i) Next i Sheets("sh3").Select Erase basedata Erase weight この間同様文12個あり '(1) testno = Range("B37").Value If testno = "" Then End End If Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sh3").Select Cells(17, 1) = testno For i = 1 To 10 Cells(17, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(17, i + 11) = weight(i) Next i End Sub
- ベストアンサー
- その他MS Office製品
- noname#178407
- 回答数6
- シートの保護を実行した時、マクロだけは作動させたい
いつもお世話になります。 WINDOWS7 EXCELL2010です。 シートの保護を実行すると下記のマクロが作動しないのですが何かいい方法はないでしょうか。 もし可能ならばご教示いただければ幸いです。 このマクロは素人の私が作成したもので合計のある行だけを表示するものです。 参考 Sub 非表示() ' ' 非表示 Macro ' マクロ記録日 : 2013/4/25 ユーザー名 : YOKOHAMA '' Rows("72:87").Select Selection.EntireRow.Hidden = True Rows("89:95").Select Selection.EntireRow.Hidden = True Rows("97:105").Select Selection.EntireRow.Hidden = True Rows("107:112").Select Selection.EntireRow.Hidden = True Rows("114:121").Select Selection.EntireRow.Hidden = True Rows("123:131").Select Selection.EntireRow.Hidden = True Rows("133:145").Select Selection.EntireRow.Hidden = True Rows("147:152").Select Selection.EntireRow.Hidden = True Rows("154:159").Select Selection.EntireRow.Hidden = True Rows("161:169").Select Selection.EntireRow.Hidden = True Rows("171:179").Select Selection.EntireRow.Hidden = True Rows("181:187").Select Selection.EntireRow.Hidden = True Rows("189:195").Select Selection.EntireRow.Hidden = True Rows("197:205").Select Selection.EntireRow.Hidden = True Rows("207:214").Select Selection.EntireRow.Hidden = True Rows("216:223").Select Selection.EntireRow.Hidden = True Rows("225:229").Select Selection.EntireRow.Hidden = True Rows("231:238").Select Selection.EntireRow.Hidden = True Rows("240:243").Select Selection.EntireRow.Hidden = True Rows("245:250").Select Selection.EntireRow.Hidden = True Rows("252:259").Select Selection.EntireRow.Hidden = True Rows("261:266").Select Selection.EntireRow.Hidden = True Range("A1").Select End Sub
- 締切済み
- その他MS Office製品
- dorasuke
- 回答数2
- マクロを簡潔にしたいので教えてください。
Sub 記入() Dim testno As String Dim testrow As Long Dim basedata(1 To 10) As String Dim weight(1 To 16) As Double Sheets("sh3").Select '(1) testno = Range("B23").Value 'No. Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sheet3").Select Cells(3, 1) = testno For i = 1 To 10 Cells(3, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(3, i + 11) = weight(i) Next i Sheets("sh3").Select Erase basedata Erase weight '(1) testno = Range("B24").Value 'No. Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sh3").Select Cells(4, 1) = testno For i = 1 To 10 Cells(4, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(4, i + 11) = weight(i) Next i Sheets("sh3").Select Erase basedata Erase weight この間同様文12個あり '(1) testno = Range("B37").Value If testno = "" Then End End If Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sh3").Select Cells(17, 1) = testno For i = 1 To 10 Cells(17, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(17, i + 11) = weight(i) Next i End Sub
- ベストアンサー
- その他MS Office製品
- noname#178407
- 回答数6
- ;と:をIF関数で調べたい
各人に時間を入力させているソフトがあるのですが、 時間を良く 12:00→12;00、12;00と入力しております。 ;ですと時間として認識されず困っております。 現在別のセルに注意を促すための式を考えています。 12;00は=IF(OR(COUNTIF(A1,"*;*"),COUNTIF(A2,"*;*")),":←間違い","")で対応出来ているのですが 12;00と半角入力している時に注意を出す方法が分かりません。 宜しくお願いします。
- 2つの内容と日付が交差するセルに値を加算したい
現在、受注登録の為の表をエクセルで作成しています。 登録しやすくする為、対象セルをいちいち探して登録しなくていい様にしたいと思っています。 内容 ------------------------ A2 からA500まで取引先名称(かぶりあり) B2 からB500 まで商品名(かぶりあり) C1からAF1まで日付が入っています(同じ日付はない) ユーザーフォームの2つのリストボックス上に取引先と商品名が表示されていて、 それぞれ選択すると ユーザーフォームのテキストボックス1に2つの値が表示されます。 ユーザーフォーム上の別のテキストボックス2に日付を入れて、また別のテキストボックス3に 受注数を入れてコマンドボタン(登録)で確定を押すと取引先・商品名(列)と日付(行)の交差するセルにその値を加算したい。 申し訳ございませんがご教授の程、宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- takehahaha2525
- 回答数2
- アクセス メモ型って並べ替えできない?
データ型をメモ型にして、画像のように▼をクリックすると、並べ替えが選択できないのですが、 そういう仕様なのですか? アクセス2010だからですか?
- ベストアンサー
- オフィス系ソフト
- BBCTSMXLSPQE
- 回答数1
- Excel_VB:条件を入れてデータ抽出
別シートにあるデータベースを 特定のセルに抽出条件となるwordを入力すると別シートから情報を返すマクロを作成しています。 簡易的なコードがございましたらご教授ください。 何卒よろしくお願いいたします。 詳細 ▼検索条件の単語を入力するセル 1~3を複数条件で抽出 1_バンド名(B6) 2_曲名(B8) 3_アルバム名(B10) ▼別シートのデータベース 1行目はタイトルを入力しています。 バンド名(A列) 曲名(B列) アルバム (C列) 時間(D列) ジャンル(E列) メディア(F列) 備考(G列) ▼情報を返すセル バンド名(F15) 曲名(G15) アルバム (H15) 時間(I列) ジャンル(J15) メディア(K15) 備考(L15)
- ベストアンサー
- その他MS Office製品
- noname#232103
- 回答数4
- Excelで別シートへ自動入力
はじめまして。 excelについてお聞きしたいのですが 現在、excelで作った発注書に 発注先と品物、入り数と発注数を入力して 印刷して各メーカーへFAXしています。 その際に、会社の意向で注文履歴を手書きでノートにつけているのですが、 注文数が多い場合、非常に時間が掛かってしまいます。 そこで発注書へ入力中に 入力項目を自動で抽出して、 別シートの注文履歴フォーマットへ自動入力される、 という事は出来るのでしょうか? 注文履歴フォーマットは 入力項目を自動で改行して 蓄積されるようオートフィルタを使ってみましたが 蓄積、改行がされず上手くいきません。 良い方法はありませんでしょうか?
- エクセルVBAの転記処理について
2つのエクセルのブックがあり、 ブックAの[シート1]には、 A列 B列 C列 D列 E列 コード 社名 品名 注文 合計 12345 グルメ社 カレー 400 800 78910 AA社 豆 100 250 12345 グルメ社 カレー 400 800 44123 ラック社 にんじん 350 400 のように、過去の注文データが1万件近くならんでおります。 ブックBの[現在]シートには、同じ列に同じ項目が並んでいるのですが、 A列 B列 C列 D列 E列 コード 社名 品名 注文 合計 12345 グルメ社 カレー 400 800 89123 100 250 55158 800 44123 ラック社 にんじん 350 400 のように、コード以外空欄というセルがあり、それが4千件あります。 ブックBにてB列が空欄の場合、ブックAのB・C・D列の値を転記する方法がわからず 困っております。 Sub ああ() Dim lRow As Long Dim i As Long Dim エラーコード(25000) Workbooks.Open Filename:=("C:\Documents and Settings\PC01\デスクトップ\bookA.xls") Workbooks("C:\Documents and Settings\PC01\デスクトップ\bookA").Activate Sheets("sheet1").Select lRow = Cells(Rows.Count, 4).End(xlUp).Row x = "" cnt = 0 For i = 4 To lRow Workbooks("C:\Documents and Settings\PC01\デスクトップ\bookA").Activate Sheets("sheet1").Select If Cells(i, 2).Value = "" Then JAN = Cells(i, 1) Windows("book2.xls").Activate Sheets("現在").Select 商品datarec = Cells(Rows.Count, 1).End(xlUp).Row x = "" Set 範囲 = Range(Cells(2, 1), Cells(商品datarec, 1)) 検索 = JAN On Error Resume Next x = Application.WorksheetFunction.match(検索, 範囲, 0) On Error GoTo 0 If x = "" Then cnt = cnt + 1 エラーコード(cnt) = JAN Else Windows("book2.xls").Activate Sheets("現在").Select メーカー名 = Cells(x + 1, 5).Value 品名 = Cells(x + 1, 6).Value Workbooks("C:\Documents and Settings\PC01\デスクトップ\bookA").Activate Sheets("sheet1").Select Cells(i, 2) = 社名 Cells(i, 3) = 品名 End If End If Next i If cnt <> 0 Then MsgBox "リストにない商品が" + Str(cnt) + "件ありました。" + vbCrLf End If End Sub というプログラムを組みました。宣言は強制させておりません。 途中で混乱してきたためおかしなコードになっております。 すみませんが、お願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- pheriar
- 回答数2