Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


67 / 3841 ページ ←次へ | 前へ→

【81135】Re:日付の扱い方のセオリー
回答  よろずや  - 19/12/1(日) 14:18 -

引用なし
パスワード
   ▼りった さん:
>1.セルの内容をDate型変数に入れる場合
> 'date1 = range1.text とするのが一般的ですか?
  date1 = range1.Value

>2.複数のセルの中から特定の日付のセルを探す場合、どう書くのが一般的ですか?
> for each range1 in worksheet1.Range("売上日一覧")
>  'if range1.xxxx = date1.xxxx then xxxx ← どう書きますか?
   If range1.Value = date1 Then xxxx

>3.セルに日付と時刻が入っていて、日付だけ比較したい場合どうすればいいですか?
> if(format(range1,"yyyy/mm/dd") = format(date1,"yyyy/mm/dd") then
> とするしかないですか?
  If Int(range1.Value) = date1 Then

>4.その他、VBAで日付を扱う際の注意事項等ありましたらご教示頂けますでしょうか?
日付型の実態は、Double型に書式を加味したものです。
日付(シリアル値)は整数ですから、特に問題はありません。
それに対して、時刻は小数点以下の数ですから、2進数の変換誤差があります。
2つの時刻の和と1つの時刻を比較して一致するはずのものが、
そうならないケースがあります。
・ツリー全体表示

【81134】日付の扱い方のセオリー
質問  りった  - 19/12/1(日) 12:21 -

引用なし
パスワード
   今まで日付はyyyymmddの文字列で扱うことが多かったのですが、セルに日付として入力されているファイルを扱うことになりました。
日付の扱い方のセオリーが分からず苦戦しております。ご指導頂けますでしょうか?

1.セルの内容をDate型変数に入れる場合
 date1 = range1.text とするのが一般的ですか?

2.複数のセルの中から特定の日付のセルを探す場合、どう書くのが一般的ですか?
 for each range1 in worksheet1.Range("売上日一覧")
  if range1.xxxx = date1.xxxx then xxxx ← どう書きますか?
 next

3.セルに日付と時刻が入っていて、日付だけ比較したい場合どうすればいいですか?
 if(format(range1,"yyyy/mm/dd") = format(date1,"yyyy/mm/dd") then とするしかないですか?
 (長くて読みづらい。)

4.その他、VBAで日付を扱う際の注意事項等ありましたらご教示頂けますでしょうか?

尚、上記において、変数名は「(型名)1」で記載しています。
・ツリー全体表示

【81133】Re:任意のセルに発生する最終行を調べたい
お礼  おじさんA  - 19/11/29(金) 10:35 -

引用なし
パスワード
   なにかコマンドで一気にできるかと思いましたが
一つずつ調べるのが良いですね。
おかげで解決いたしました。
ありがとうございます
・ツリー全体表示

【81132】Re:任意のセルに発生する最終行を調べたい
発言  ピンク  - 19/11/29(金) 9:44 -

引用なし
パスワード
   参考に
Sub Test()
  Dim LR As Long, i As Long

  For i = 1 To 10
    If LR < Cells(101, i).End(xlUp).Row Then
      LR = Cells(101, i).End(xlUp).Row
    End If
  Next
  MsgBox "最終行は、" & LR
End Sub
・ツリー全体表示

【81131】任意のセルに発生する最終行を調べたい
質問  おじさんA  - 19/11/29(金) 8:06 -

引用なし
パスワード
   最終行を取得したい。
ただし、101行以上はゴミデータ
データはそれより小さい行にあるのだが、
A列にあったりC列にあったりの任意(A〜J)のセルに発生してしまう。

VBAでどのようにすれば可能でしょうか?
・ツリー全体表示

【81130】Re:複数シートのデータをまとめシートに...
お礼  ade  - 19/11/28(木) 9:40 -

引用なし
パスワード
   とても参考になりました。
ありがとうございました。
・ツリー全体表示

【81129】Re:複数シートのデータをまとめシートに...
発言  ピンク  - 19/11/27(水) 11:25 -

引用なし
パスワード
   訂正
>For i = 1 To 3
  ↓
For i = 1 To 31
・ツリー全体表示

【81128】Re:複数シートのデータをまとめシートに...
発言  ピンク  - 19/11/27(水) 11:23 -

引用なし
パスワード
   参考に
Sub Test()
  Dim i As Long
  With Worksheets("まとめシート")
    For i = 1 To 3
      .Cells(1, i).Value = "'10/" & i
      Worksheets("10月" & i & "日").Range("B2:B5").Copy .Cells(2, i)
    Next
  End With
End Sub
・ツリー全体表示

【81127】複数シートのデータをまとめシートに表示...
質問  ade  - 19/11/27(水) 10:18 -

引用なし
パスワード
   はじめまして。自分なりに調べているのですが、出来なくて困っています。

複数シート<10月1日、10月2日・・・10月31日>があります。
各シートの配列は同じで、各セルは他のセルを参照(例:=K2)しています。
  <10月1日> <10月2日>・・・<10月31日>
B2   1.5     2.0       3.0
B3   0.3     1.8         ←空白
B4   4.3     2.3       1.9
B5   1.3     3.8       2.5 

<まとめシート>
 10/1  10/2 ・・・・ 10/31
 1.5   2.0       3.0
 0.3   1.8       
 4.3   2.3       1.9
 1.3   3.8       2.5
上記のようにB2〜B5をまとめシートに表示させるコードを教えていただきたいです。その際、シート名<10月1日>を<まとめシート>の10/1に表示させるコードもよろしくお願いします。
・ツリー全体表示

【81126】Re:全シートの件数を集計したい
発言  γ  - 19/11/8(金) 15:16 -

引用なし
パスワード
   例えばこんなところを参考にしてみては?
ht  tps://www.moug.net/tech/exvba/0040062.html
・ツリー全体表示

【81125】Re:全シートの件数を集計したい
お礼  初心者です  - 19/11/7(木) 21:38 -

引用なし
パスワード
   Yさま
お返事ありがとうございます。
実は、現在、別シートに順番にコピーを繰り返してCOUNTIFで件数を計算しています。ピボットテーブルは使ったことがないので正直わかりません。コピーだけでも自動できると大変助かると思いました。
マクロ記録をやってみます。
・ツリー全体表示

【81124】Re:全シートの件数を集計したい
発言  γ  - 19/11/5(火) 6:05 -

引用なし
パスワード
   (1)件数集計シート とでもいったものを作成し、
そこに、各シートのB,C列をコピーします。
所属  種別
A    a
A    a
A    b
B    a
B    b
B    c
C    b
C    b
C    c

(2)
それをもとに、ピボットテーブルで以下のような表を作ったらどうでしょうか。
    種別          
所属  a    b    c    総計
A    2    1        3
B    1    1    1    3
C        2    1    3
総計  3    4    2    9

----------------
詰まっているのは、どこですか?
不明点を明確にしてください。

・各シートの最終行は、
   Cells(Rows.Count,"A").End(xlUp).Rowで取得できます。
・コピーする範囲は
   Range(Cells(2,2), Cells(最終行,3)) です。(シートの指定はRange,Cellsの両方に必要です)
・コピーペイストは、ひとつの例でマクロ記録をとれば、コードが解ります。

ピボットテーブルについては、マクロ記録でコード化できますし、
予め手作業で作っておいて、データ範囲の更新だけをマクロで実行してもよいでしょう。

ご自分でトライして、途中まででも結構ですので、コードを示してもらえますか?
・ツリー全体表示

【81123】全シートの件数を集計したい
質問  初心者です  - 19/11/4(月) 23:07 -

引用なし
パスワード
   やりたいことは、同じファイルの複数シートの集計(件数)をVBAでしたいのですが、シート数は12から24程度で変動します。また、データは同じ形式ですが、シートごとに行数が変動します。

 A列/B列/C列/D列/E列/F列  ・・・実際にはH列まで続きます
1/氏名/所属/種別/ランク/自己評価/上長評価/
2/あ/A/a/1/A/B/
3/い/A /b/2/B/A/    
4/う/B/c/1/A/B/    
5/え/C/a/3/S/A/

これを、集計シートに、所属と種別で、それぞれ件数を出したいと思います。
集計シート
 A列/B列/C列/D列/E列/F列
1/所属/件数/空欄/空欄/種別/件数
2/A/?/空欄/空欄/a/?
3/B/?/空欄/空欄/b/?
4/C/?/空欄/空欄/c/?
5/D/?/空欄/空欄/d/?

所属は、現在30程度で入力済みですが、今後、増えることもあります。種別は、5通りで固定です。

初心者で、うまく説明できているか不安ですが、情報が不足していれば、ご指摘お願いします。
お分かりになる方、何卒よろしくお願いいたします。
・ツリー全体表示

【81122】Re:抽出条件が3つある場合
お礼  あきんちょ  - 19/11/4(月) 10:07 -

引用なし
パスワード
   ▼マナ さん:
>▼あきんちょ さん:
>
>フィルターの詳細設定を使うと良いです。
>まずは手作業で試して、その操作をマクロ記録するとよいです。
・ツリー全体表示

【81120】Re:抽出条件が3つある場合
発言  マナ  - 19/11/3(日) 17:21 -

引用なし
パスワード
   ▼あきんちょ さん:

フィルターの詳細設定を使うと良いです。
まずは手作業で試して、その操作をマクロ記録するとよいです。
・ツリー全体表示

【81119】Re:vbaでcountifの使い方とかけ算の仕方
お礼  あきんちょ  - 19/11/3(日) 16:09 -

引用なし
パスワード
   マナさん

ありがとうございました。

添付もわかりやすく、少しわかってきました。

今回教えて頂いた方法で、試してみたいと思います。


▼マナ さん:
>▼あきんちょ さん:
>
>ht tps://www.officepro.jp/excelvba/cell_value/index3.html
>
>参照するセルが変動する場合には、R1C1形式を使うと簡単です。
>普段、使用しないと思うので、慣れが必要すが。
>
>最初は、手作業で数式を挿入し、
>それをマクロの記録、修正するのがよいかもしれません。
・ツリー全体表示

【81118】抽出条件が3つある場合
質問  あきんちょ  - 19/11/3(日) 16:04 -

引用なし
パスワード
   VBAを始めたばかりの初心者です。
教えてください。

A列   B列   
IIM1894 LT
IUR1185 ST
IUX1254 LE 
IUM2549 SE
IUV5749 LT 
IUE4587 LT 

上記の様な抽出データが列で58列ほど行で2000以上あります。
今回作りたいVBAは、A列で頭がIUV,IUM,IUXから始まる行のみ抽出し他の行は
削除したいです。又、抽出されたデータを昇順で並び替えコピーをし、
SHEET3に貼り付けるにはどのようにしたらよいでしょうか?
2つまでの抽出までは美味くいくのですが、3つ目の抽出がわかりません。

良い方法があれば教えて頂けると幸いです。
・ツリー全体表示

【81117】Re:vbaでcountifの使い方とかけ算の仕方
発言  マナ  - 19/11/3(日) 10:38 -

引用なし
パスワード
   ▼あきんちょ さん:

ht tps://www.officepro.jp/excelvba/cell_value/index3.html

参照するセルが変動する場合には、R1C1形式を使うと簡単です。
普段、使用しないと思うので、慣れが必要すが。

最初は、手作業で数式を挿入し、
それをマクロの記録、修正するのがよいかもしれません。
・ツリー全体表示

【81116】Re:vbaでcountifの使い方とかけ算の仕方
質問  あきんちょ  - 19/11/3(日) 9:27 -

引用なし
パスワード
   マナさん、ありがとうございます&#10024;

今後、使える様になりたいので、下記の意味を教えて頂けないでしょうか?

r.FormulaR1C1 = "=countif(r2c:r[-2]c,""L*"")"
r.Offset(, 1).FormulaR1C1 = "=rc[-1]*4000"
  
→"=countif(r2c:r[-2]c,""L*"")"
  ()の中の意味が理解出来ません。L*は、分かります。

→r.Offset(, 1).FormulaR1C1 = "=rc[-1]*4000"
  このステートメントについてはほとんど分かりませんでした。

お手数おかけしますが、
よろしくお願いします。
・ツリー全体表示

【81115】Re:行の非表示
お礼  yuji  - 19/11/3(日) 7:43 -

引用なし
パスワード
   そうですね。
こんな簡単な話、お手をわずらわせてすみません。

ありがとうございました。
・ツリー全体表示

67 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free