すぐマク Excel VBA Board

66591
Excel VBA FAQ 掲示板
画像クリックで拡大可能。レスのついた質問は削除しない。丸投げしない。
名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

ご親切に感謝 千葉 衛

2012/01/27 (Fri) 11:19:03

永井先生
お忙しいなか、何時もご親切な、ご教示ありがとうございます。
時間間隔のところで、不覚にもミニッツなんて考えたりしてしまいました、時間間隔の種別、年、月、日などだったのですね、済みませんでした。
寒さ厳しき折から、御身お大切に、ご健勝をお祈り申し上げます。

指定する列に空白セルを含む行の削除について 千葉 衛

2012/01/18 (Wed) 14:51:33

永井先生またお世話になります。
もう88歳ですが、飽きずにやっています。認知症防止になっているかも知れません。
(エクセルVBAマクロ集)→行列操作のFAQの5のマクロだと
空白セルを含む全ての行が削除されます。これを、例えば
A列に空白セルがある行というように指定するには、どのようにすればよいでしょうか。

Re: 指定する列に空白セルを含む行の削除について - 永井善王 URL

2012/01/22 (Sun) 22:34:11

千葉さん、米寿なのですね、頑張っておみえで尊敬します。
回答が遅くなってしまいました。ここのところ連日、出版社から校正紙が届きましてハードな日々が過ぎています。来月には全国書店で発売になると思います。また、お引き立てください。
ということで、誠に申し訳ありませんが、マクロを作っておきましたが丁寧にご説明することまでできません。
参考にされて、分からない点が出ましたら、また、ご質問ください。
こちらでテストに使ったデータは右図のとおりです。この図はクリックすれば拡大できます。

Sub A列のセルが空白である行を削除する()
Worksheets("Sheet1").Activate
使われた行数 = ActiveSheet.UsedRange.Rows.Count
For 行 = 使われた行数 To 1 Step -1
If Range("A" & 行) = "" Then
Rows(行).Delete Shift:=xlUp
End If
Next
End Sub

なお、掲示板に再び投稿される折がありましたら、千葉さまが1月18日に最初に質問されたときのスレッドにある[返信]ボタンをクリックして、そこで書き込んでください。よろしくお願いします。

Re: 指定する列に空白セルを含む行の削除について 千葉 衛

2012/01/24 (Tue) 14:50:03

早速のご教示ありがとうございました。
60余年に及ぶ喫煙で肺がハァハァで自宅酸素治療を受けながらパソコンを楽しんでいます。
パソコンはなによりも正直で大好きです。
先生のご指導とおりにしたところ、期待した結果が得られました、重ねて御礼申し上げます。
 (意味のわからない用語があるのですが、パソコン用語辞典のようなものが出ているのでしょうか?)

Re: 指定する列に空白セルを含む行の削除について 千葉 衛

2012/01/26 (Thu) 13:41:37

永井先生、たびたびのお邪魔、歳に免じてお許しください。
また、これは返信で送るのは適当でないかも知れません、
併せて、お許しください。

 値の操作基本形の27
 加算後日付=DATEAdd(時間間隔、加算日数、起算日)
を利用して、5ケ月を加算し、又は5年を加算したものを
表示したいのですが、起算日はA1にあるものとして式はどのようになるのでしょうか?

Re: 指定する列に空白セルを含む行の削除について - 永井善王 URL

2012/01/26 (Thu) 20:42:39

校正作業が未だ終わってなくて時間がないので、回答だけになります。素っ気なくてすみません。

ご覧になったサンプルは3カ月経過した日付けを取得するようになっていますから、3を5に替えれば5カ月後になります。(起算日はA1セルに変えています。)
Sub 指定の5カ月が経過した日付を取得する()
時間間隔 = "m"
加算数 = 5
' 起算日 = "2008/1/31"
起算日 = Range("A1").Value
加算後日付 = DateAdd(時間間隔, 加算日数, 起算日)
End Sub

5年後は下記のとおりです。
Sub 指定の5年が経過した日付を取得する()
時間間隔 = "yyyy"
加算数 = 5
起算日 = "2008/1/31"
加算後日付 = DateAdd(時間間隔, 加算日数, 起算日)
End Sub

それと、[返信]ボタンで送るのは質問したことのヤリトリが続いている間です。違う新規の質問は1番上にある[投稿]ボタンです。

特定の条件でデータを分けたい - 初心者

2012/01/24 (Tue) 10:53:19

はじめまして。エクセル2003で処理をしているのですが、データが大量に増えてきまして効率よく作業したいのでVBに出来ないでしょうか。
現在の流れです。
あるソフトからCSVからデータ抽出されてきます。
エクセルで読み込むとA列にデータが入ります。
これを各セルに入っている特定の文字が入っているセルを目視によってB列 C列 D列 に分けないのです。
現在は並べ替えをして、該当文字を探して切り取り、貼り付けを繰り返している状況です。

Re: 特定の条件でデータを分けたい - 初心者

2012/01/24 (Tue) 11:18:28

すいません。
出来ました。
オートフィルターに条件を付けて処理が出来るのを知りました。
マクロ登録したので、少し修正します。
失礼しました。

検索結果にあてはまる行をコピー ふじ

2012/01/11 (Wed) 21:38:46

債務者管理で次のようなことをしたいのですが、可能でしょうか。つたない説明ですが次の内容です。
契約者ごとに複数の作業があり、1人1行のリストがあります。1行目は作業1、作業2、作業3・・備考という項目があり、2行目には、(作業1の)作業予定日 (作業1の)作業日 (作業2の)作業日 (作業3の)作業予定日 (作業3の)作業日・・という項目があります。(作業により、作業予定日があったりなかったりします)3行目以降に、名前、それぞれの日付入力をします。
作業予定日はあらかじめ入力されていて、作業をしたら作業日に入力します。
この状態で、「作業予定日が過ぎても作業日が空欄の行」が、自動的に違うシート(例えば「期限過ぎリスト」)にコピペされるということは可能でしょうか。
またこのようなシートが複数(例えばABC)あり、「期限過ぎリスト」は1つで、複数のシートから「期限過ぎリスト」シートに張り付くようにしたいのです。
期限過ぎリストには、あらかじめシートA~Cのリストのタイトル行のみできていて、それぞれのタイトルの下に該当者が貼りつくようにしたいのです。
どうぞよろしくお願いいたします。

Re: 検索結果にあてはまる行をコピー - 永井善王 URL

2012/01/12 (Thu) 08:52:34

右図 (クリックで拡大可能) のようなシートですね。
作業により作業予定日があったりなかったりするので、繰り返し処理をするのに工夫が必要になりますが、そんなに難しいことではありませんよ。
ですが、これはマクロの製作依頼ですか?
ヒントをお教えすればよいのなら、4行目のA列から順に右方向へ繰り返し処理し、空欄が見つかったらその列の2行目にある見出しに「作業日」とあれば、その列の直前の列と共にコピーして期限付きリストへ貼り付ければよいかと思います。
もしも、マクロを作って欲しいのであれば、そのように依頼されればいいと思います。くわしい仕様の確認から始まるでしょうが、費用はそんなにかからないかと思います。

無題 くまお

2011/12/24 (Sat) 10:40:30

Sheet1の6行目から下端行までK列が示す回数分ずつA列を作業用シートにコピーする()を使って帳票印刷をしていますが、回数が変動する場合、作業用シートに20件ずつコピーしたい場合はどのようにすればよろしいのでしょうか?

Re: 無題 - 永井善王 URL

2011/12/25 (Sun) 08:22:40

もう少し補足説明していただけますか。
1. 『・・A列を作業用シートにコピーする()』とありますが、引用先のURLを教えていただけますか。
2. 「K列が示す回数」ではなくて、常に20件ずつコピーするようにしたいということですか。
3. 作成された帳票印刷のマクロを示すことはできますか。

マクロの変数の型が合わないエラーの解消は? - 幸一

2011/12/13 (Tue) 11:00:42

シートのくり返し印刷をマクロで行おうと考えています。
同じファイル内の別シートでは上手く動いていたもの(マクロ)を変数の指定番地を変更したら、「エラー#13 変数の型が合いません」と表示されてマクロが上手く走りません。どのようにしたらよいのでしょうか。マクロは次のようなものです。

変数 「printstart」と「printend」は共にシートから直接読み込んでいます。
変数「i」はFor ~ Next でくり返し、「i」の値をシートに戻し、印刷内容の変更をさせています。

マクロの実行をすると For ~ Next が黄色く反転しとまります。


Sub Macro1()
'
'マクロ1
'データ個票 印刷
'
Dim inti As Integer, intprintstart As Integer, intprintend As Integer
'
With ActiveSheet.PageSetup
'.Orientation = xlLandscape
.PaperSize = xlPaperA4
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
'
printstart = Range("印刷開始番号").Value
printend = Range("印刷終了番号").Value
'
For i = printstart To printend
Range("通し番号").Value = i
Worksheets("2期個票").PrintPreview
Next i

End Sub

以上のようなもので、マクロ初心者が本屋ネットで調べながら作ってみました。一度は動いたのですが、その後動かないのでよろしくお願いいたします。

Re: マクロの変数の型が合わないエラーの解消は? - 永井善王 URL

2011/12/13 (Tue) 18:50:53

『For ~ Next が黄色く反転』したときの、i の値、printstart の値、printend の値は、それぞれどうなっていますか?
黄色くなっている行の変数名にマウスを重ねると内容が表示されるので、簡単にわかります。おそらく printend におかしな値が入っているのではありませんか?

Re: マクロの変数の型が合わないエラーの解消は? - 幸一

2011/12/16 (Fri) 01:31:53

どうも有難うございました。

変数に入っている物が数値ではありませんでした。

シートから数値を読み取るときに
Range("印刷開始番号").Valueの"印刷開始番号"の番地指定が「○1:△1」の様になっているとダメなようで、「○1」だけにすると動きました。

マウスポインタを変数に合わせると変数内容が表示できるとは知りませんでした。大変便利な機能だなと、併せて教えていただき有難うございました。

日付を検索し、その列に貼り付けるには? ユウリ

2011/11/21 (Mon) 22:19:14

同一ブック内のシートです。
入力シート1枚と保存シート4枚あります。
入力シートのC5~M5を保存シート1のD3~AI3に入力した日付(11~10)に対応する日付に縦に変換(行列の入れ替え)して貼り付けていきたいです。
入力シートは1行だけではありません。
C5~M5、C6~M6と続き9行×4組あります。
それぞれ10行目に合計が入るので2組目は13行目から始まります。
入力シートは1枚なのですが、各組毎に保存シートが分かれています。
保存シートはD列から日付が始まりますが、〆日の関係で11日から始まります。
保存シートにも各行毎に合計があります。
例えばC5~M5をD3~D11に貼り付け、次のC6~M6はD13~D23に貼り付け…という感じです。

1行を実験的に試してみました。

Range("C5:M5").select
Selection.copy
Sheets("保存シート1").Serect
Range("D3").Select
Selection.Pastepecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:False, Transpose:True

とふつうにマクロに記録すればでてくるものに
Matchを組み合わせればなんとかなるのでは?
と思い、こちらのサイトや本を見ながら

Dim 検査値 As Double
Sheets("入力シート").Select
Range("C5:M5).Select
Selection.Copy
検査値=Range("O1").Value
Sheets("保存シート1").Select
Set 検索範囲=Range("D1:AI1")
列=Application.WorksheetFunction.Match(検査値,検査範囲,0)
Range(列&"3").Select
Selection.Pastepecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:False, Transpose:True

のように組んでみたのですがうまく作動しませんでした。
検査値のO1は入力シートにあり、記録する日付を入力するセルです。N1に12月、P1に日と記入してあり数字入力するだけのセルです。

毎日の作業で困っています。解決方法教えてください。

Re: 日付を検索し、その列に貼り付けるには? - 永井善王 URL

2011/11/22 (Tue) 19:56:35

『・・うまく作動しませんでした。』と言われるブックを送ってくだされば見てあげてもいいですよ。メルアドは下記ページにあります。
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv5.html

Re: Re: 日付を検索し、その列に貼り付けるには? ユウリ

2011/11/22 (Tue) 22:37:06

ありがとうございます。
会社に資料がありますので、自宅で同じものを作成し送付させていただきたす。
明日中には送れるかと思います。

Re: 日付を検索し、その列に貼り付けるには? - 永井善王 URL

2011/11/23 (Wed) 11:11:49

送っていただいたオープンオフィスで作ったといわれるXMLファイルは、Excel2003および2010そしてオープンオフィスでは[読み込み中にエラーが発生しました。]となり開けませんでした。
ただし、ブラウザ(Mozilla FireFox)で見てみましたら一応、HTML文が表示されましたが [このXMLファイルにはスタイル情報が関連づけられていないようです。]ということで、Excelシートとしては表示されませんでした。

そこで、もう一度、当初のご質問文を解析してみました。右図のようになると思います(クリックで拡大可能、解析結果はABC順)。不可解な点が数々あるようですが、マクロを下記のように修正すればいいかと思います。上手くいったらご報告ください。

Sub 回答マクロ()
Sheets("入力シート").Select
Range("C5:M5").Select
Selection.Copy
検査値 = Range("O1").Value
Sheets("保存シート1").Select
Set 検索範囲 = Range("D3:AI3")
列 = Application.WorksheetFunction.Match(検査値, 検索範囲, 0)
Cells(3, 3 + 列).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub

Re: Re: 日付を検索し、その列に貼り付けるには? ユウリ

2011/11/23 (Wed) 11:28:14

ありがとうございます。
早速明日、会社で試してみたいとおもいます。

送付させて頂いた資料が、資料にならず申し訳ありませんでした。
また報告させていただきます。
早急にexcelを導入いたします。

Re: 日付を検索し、その列に貼り付けるには? - ユウリ

2011/11/24 (Thu) 17:20:56

実行してみましたが

実行時エラー'1004'
WorksheetFunctionクラスのMatchプロパティを取得できません

となりました。

10行目に合計が入るので2組目は13行目から始まる
というのは保存シート側の説明です。
説明が足らず申し訳ありません。
保存シートの日付はD1~AH1の間違いでした。

何がだめなのでしょうか??

Re: 日付を検索し、その列に貼り付けるには? - 永井善王 URL

2011/11/25 (Fri) 08:00:24

1. 回答でお示しした「入力シート」と「保存シート1」を作成して、それでマクロを実行してみましたか?
2. まさか、
列 = Application.WorksheetFunction.Match(検査値, 検索範囲, 0) を
列 = Application.WorksheetFunction.Match(検査値, 検査範囲, 0) としている等、マクロの入力ミスはありませんね?
3. 上記1.と2.ともOKの場合は、「入力シート」と「保存シート1」を私が作成したのと同程度のもの (本物でなくてもよいという意味) でよいので図を作成してアップするか、Eメールで本物ブックを送ってくれれば見てあげますよ。

Re: Re: 日付を検索し、その列に貼り付けるには? ユウリ

2011/11/25 (Fri) 23:17:28

ありがとうございます。

再度、作成しなおし確認いたしましたところ
きちんと動きました。
シートの名前にスペースがはいっておりました。
お手数おかけいたしました。
あとは繰り返し行うように設定がんばります。

ほんとうに、ありがとうございました。

UserForm 高橋 正博

2011/11/18 (Fri) 09:22:58

[Microsoft Forms 2.0 MultiPage]での表示窓の大きさや位置、各ボタンコントロールの位置等のデータをマクロを使用してエクスポート、インポートが出来るのでしょうか。「ACCESSのUserFormをEXCELLで使用する」のような記事を見た覚えが有ります。要するにACCESSで使用するUserFormをEXCELLで作りたいのです。(EXCELLのマクロの方がACCESSの物より制約が少ないと思うので)
よろしくお願いします。

Re: UserForm - 永井善王 URL

2011/11/20 (Sun) 17:10:01

高橋さまへ (管理人の永井より)
レスが付かないようですね。私もこのご質問へは回答できませんので、他の掲示板を利用されることをお勧めします。
その場合は、その旨を書き込みして締めくくってください。そうしないとマルチポストになってしまいますから。

Re: UserForm 高橋 正博

2011/11/23 (Wed) 18:31:27

ちょっと他をあたって見ましたが、ACCESSの方でFORMの再利用というのを見つけました。Dataのエクスポート、インポートではなく、単なるFormのコピー、貼り付けのようです。(貼り付け後、プロパティの修正が必要)
となると、
1.ACCESS、EXCELL間でのFormのコピーの可否の確認。
2.EXCELLでFormを作る時のキーの記録。
3.VBEでのマクロ変更修正
の手順になるのかなと思います。最終的にはアドイン形式までと考えてますがどーなる事やら。ダメ元でやってみます。有り難うございました。

C列に特定の数字が入っている行を抽出してコピーするには? 谷浜 太郎

2011/10/28 (Fri) 17:44:20

ありがとうございました。
うまくいきました。
しかし、これを応用し別の表で210行あるシートのQ列に数字が入っている行を抽出するマクロを作ったのですが、うまく抽出できません。
ちなみに、Q列には148行のみ数字がは入っています。他は空欄です。

Re: C列に特定の数字が入っている行を抽出してコピーするには? - 永井善王 URL

2011/10/29 (Sat) 06:28:47

作ったマクロをご提示ください。

Re: C列に特定の数字が入っている行を抽出してコピーするには? 谷浜 太郎

2011/11/01 (Tue) 17:39:30

コピーする表の見出しをまずコピーしてから、その4行めから教えて頂いたマクロが走るようにしたつもりですが、うまくいきません。
宜しくお願い致します。

Sub Macro6()
Sheets("総括(無選別)").Select
Range("a1:q3").Select
Selection.Copy
Sheets("Sheet1").Select
Rows("1:1").Select
ActiveSheet.Paste
Application.CutCopyMode = False

Dim stRow As Integer
Dim endRow As Long
Dim WriteRow As Long
Const Find_Word = "#" '検索文字
Const Read_Sheet = "総括(無選別)" '検索Sheet
Const Write_Sheet = "Sheet1" '書込みSheet

列 = 17 '● C列という意味
Sheets(Read_Sheet).Select
endRow = Cells(65536, 17).End(xlUp).Row '最終行 ●
stRow = Cells(1, 17).End(xlDown).Row '開始行 ●
If endRow = stRow Then
stRow = 1
End If

WriteRow = 4 '書き出し
For i = stRow To endRow
If Cells(i, 17) Like "*" & Find_Word & "*" Then '●
Rows(i).Copy
Sheets(Write_Sheet).Rows(WriteRow).PasteSpecial
Application.CutCopyMode = False
WriteRow = WriteRow + 1
End If
Next i

Sheets("Sheet1").Select

Columns("A:q").Select
Columns("A:q").EntireColumn.AutoFit
Sheets("総括(無選別)").Select

End Sub

Re: C列に特定の数字が入っている行を抽出してコピーするには? - 永井善王 URL

2011/11/02 (Wed) 09:58:32

うまくいかなくてどうなったのですか?
そして、どうなればうまくいったことになるのですか?
Find_Word が # になっていますが、井桁マークが含まれているセルがある行をコピーしたいのですか?

Re: C列に特定の数字が入っている行を抽出してコピーするには? - 谷浜 太郎

2011/11/04 (Fri) 17:53:49

17列目に「数字」が入っている行を抽出して別のシートへコピーしようとしたのですが、数字の入っていない別の行(1行目)をコピーしてしまいます。
このシートは148行目の17列にしか数字が入っていないので、その128行目を抽出できれば、うまくいきます。
できれば、コピーの貼り付け時は、全部貼り付けではなく、形式を選択して「値」のみ貼り付けしたいのですが、どこを修正すればいいでしょうか?
よろしくお願い致します。


Re: C列に特定の数字が入っている行を抽出してコピーするには? - 永井善王 URL

2011/11/04 (Fri) 19:27:58

谷浜さんへ (管理人より)
掲示板の使用に不慣れなようですね。質疑が続いている間は、いちいち新規のスレッドを作らないで、最初(2011/10/28 (Fri) 17:44:20)の質問にある [返信]ボタンをクリックして入力してください。 …… この上にある 2011/11/04 (Fri) 17:53:49 の書き込みは、あなたが 2011/11/04 (Fri) 15:13:44 に書き込みされたものを移しておきました。

ところで、
1. こちらから 2011/11/02 (Wed) 09:58:32 にお尋ねした 3番目の返答がなかったですが、数字を探したいのですね。

2. 「数字の入っていない別の行(1行目)を・・」とありますが、Cells(1,17) つまり Q1セルにはなんと入っているのですか。

3. 「148行目の17列にしか数字が入っていない」のに「128行目を抽出できれば・・」とありますが、おかしくありませんか。

4. このHPの[形式を選んで貼り付ける] http://www.asahi-net.or.jp/~zn3y-ngi/YNxv209.html#2 が参考になるかと。

Re:Re: C列に特定の数字が入っている行を抽出してコピーするには? 谷浜 太郎

2011/11/04 (Fri) 15:13:44

17列目に「数字」が入っている行を抽出して別のシートへコピーしようとしたのですが、数字の入っていない別の行(1行目)をコピーしてしまいます。
このシートは148行目の17列にしか数字が入っていないので、その128行目を抽出できれば、うまくいきます。
できれば、コピーの貼り付け時は、全部貼り付けではなく、形式を選択して「値」のみ貼り付けしたいのですが、どこを修正すればいいでしょうか?
よろしくお願い致します。


Copyright © 1999- FC2, inc All Rights Reserved.