Excel VBA質問箱 IV

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

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


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

【81968】Re:連続するした数値の判定
発言  daikonsan  - 22/2/16(水) 10:34 -

引用なし
パスワード
   ▼マナ さん:
スクリーンショット(先頭にエイチティーティーピー://をつけてください)
gyazo.com/bbeb11fae8b93069c88f9366bb552304
・ツリー全体表示

【81967】Re:連続するした数値の判定
発言  daikonsan  - 22/2/16(水) 10:26 -

引用なし
パスワード
   ▼マナ さん:
追加質問で大変恐縮なのですが、ご教授いただけないでしょうか。

別ブック(IDと同じブック)にチェック欄があります。上記のようにID、日付などをコピーした後、
チェック欄も同じように日付の右側(G列〜K列)へ転記したいです。
こちらはIDごとにチェック(○)が入っている箇所が違うので、IDの数分ループする中でさらに5回(各IDのチェック行分)ループさせる必要があるのでしょうか。
また、別ブックのチェックは横持ちで、コピー先は縦持ち?になるので、詰まっています。


別ブックのレイアウトは次のような形です。
※直書きするとずれてしまうので、スクリーンショット(URL)を貼り付けます。
・ツリー全体表示

【81966】Re:連続するした数値の判定
お礼  daikonsan  - 22/2/15(火) 16:17 -

引用なし
パスワード
   ▼マナ さん:
ありがとうございます!
別ブックのID分日付を入力する処理は思いつきませんでした。
本当にありがとうございました!
・ツリー全体表示

【81965】Re:連続するした数値の判定
発言  マナ  - 22/2/14(月) 18:43 -

引用なし
パスワード
   ▼daikonsan さん:


こんな感じで。下のセル値が小さいかどうかで判定

Sub test()
  Dim ws As Worksheet, a
  Dim r As Range, c As Range
  Dim k As Long
  
  Set ws = Workbooks("Book1.xlsx").Worksheets("Sheet1")
  With ws.Range("A4", ws.Cells(Rows.Count, 1).End(xlUp))
    a = Split(WorksheetFunction.TextJoin(" ", True, .Cells))
  End With
  
  Set r = Range("F4", Cells(Rows.Count, 6).End(xlUp))
  k = 0
  For Each c In r
    c.Offset(, -1).Value = a(k)
    If c.Value > c.Offset(1).Value Then k = k + 1
  Next
  
End Sub


前の質問の続きで
IDの種類だけ日付コピーするなら


Sub test2()
  Dim ws As Worksheet, a
  Dim r As Range, v
  Dim n As Long
  Dim k As Long
  
  Set ws = Workbooks("Book1.xlsx").Worksheets("Sheet1")
  With ws.Range("A4", ws.Cells(Rows.Count, 1).End(xlUp))
    a = Split(WorksheetFunction.TextJoin(" ", True, .Cells))
  End With
  
  Set r = Range("F2", Cells(Rows.Count, 6).End(xlUp))
  v = r.Value
  n = UBound(v)

  For k = 0 To UBound(a)
    r.Offset(k * n, -1).Value = a(k)
    r.Offset(k * n).Value = v
  Next
  
End Sub


日付もマクロで入力するなら

Sub test3()
  Dim ws As Worksheet, a
  Dim y As Long, m As Long
  Dim d1 As Long, d2 As Long
  Dim v, n As Long
  Dim k As Long
  Dim r As Range
  
  Set ws = Workbooks("Book1.xlsx").Worksheets("Sheet1")
  With ws.Range("A4", ws.Cells(Rows.Count, 1).End(xlUp))
    a = Split(WorksheetFunction.TextJoin(" ", True, .Cells))
  End With
  
  y = 2022
  m = 2
  
  d1 = CLng(DateSerial(y, m, 1))
  d2 = CLng(DateSerial(y, m + 1, 0))
  v = Evaluate("row(" & d1 & ":" & d2 & ")")
  n = UBound(v)

  For k = 0 To UBound(a)
    Set r = Range("F2").Resize(n).Offset(k * n)
    r.Offset(, -1).Value = a(k)
    r.Value = v
  Next
  
End Sub
・ツリー全体表示

【81964】Re:連続するした数値の判定
発言  daikonsan  - 22/2/14(月) 16:05 -

引用なし
パスワード
   ■補足
別ブックのIDですが、毎行あるのではなく、4行間隔で別ブックに入力されています。(以下のような形)

  ID
4 1111
5
6
7
8
9 2222
10
11
12
13
14 3333
・ツリー全体表示

【81963】Re:連続するした数値の判定
回答  daikonsan  - 22/2/14(月) 13:17 -

引用なし
パスワード
   ▼マナ さん:
2019 MSO バージョン 2201 ビルド 16.0.14827.20186 になります。
・ツリー全体表示

【81962】Re:連続するした数値の判定
発言  マナ  - 22/2/14(月) 12:32 -

引用なし
パスワード
   ご使用のエクセルのバージョンを教えてください
・ツリー全体表示

【81961】連続するした数値の判定について
質問  daikonsan  - 22/2/14(月) 9:48 -

引用なし
パスワード
     F列
1 項目名
2 2021/02/01
3 2021/02/02
4 2021/02/03
5 2021/02/04
6 2021/02/05
7 2021/02/06
8 2021/02/07
9 2021/02/08
10 2021/02/09
11 2021/02/10
12 2021/02/11
13 2021/02/12
14 2021/02/13
15 2021/02/14
16 2021/02/15
17 2021/02/16
18 2021/02/17
19 2021/02/18
20 2021/02/19
21 2021/02/20
22 2021/02/21
23 2021/02/22
24 2021/02/23
25 2021/02/24
26 2021/02/25
27 2021/02/26
28 2021/02/27
29 2021/02/28
30 2021/02/01
31 2021/02/02
32 2021/02/03
33 2021/02/04
34 2021/02/05
35 2021/02/06
36 2021/02/07
37 2021/02/08
38 2021/02/09
39 2021/02/10
40 2021/02/11
41 2021/02/12
42 2021/02/13
43 2021/02/14
44 2021/02/15
45 2021/02/16
46 2021/02/17
47 2021/02/18
48 2021/02/19
49 2021/02/20
50 2021/02/21
51 2021/02/22
52 2021/02/23
53 2021/02/24
54 2021/02/25
55 2021/02/26
56 2021/02/27
57 2021/02/28

お世話になります。

上記のように入力されている日付があります。(日付の繰り返しは任意の回数分行う)
日付をもとに別ブックからIDを日付分コピー→日付が最終日から初日に変わったら別IDが別ブックコピーされる。という風にしたいのですが、日付が変わった際の判定はどのようにすればよろしいでしょうか。
IDは一意の値で連番などではないです。
想定している結果は以下のような形です。

  B列         F列
1 項目名
2 1111(ID)  2021/02/01
3 1111(ID)  2021/02/02
4 1111(ID)  2021/02/03
5 1111(ID)  2021/02/04
6 1111(ID)  2021/02/05
7 1111(ID)  2021/02/06
8 1111(ID)  2021/02/07
9 1111(ID)  2021/02/08
10 1111(ID)  2021/02/09
11 1111(ID)  2021/02/10
12 1111(ID)  2021/02/11
13 1111(ID)  2021/02/12
14 1111(ID)  2021/02/13
15 1111(ID)  2021/02/14
16 1111(ID)  2021/02/15
17 1111(ID)  2021/02/16
18 1111(ID)  2021/02/17
19 1111(ID)  2021/02/18
20 1111(ID)  2021/02/19
21 1111(ID)  2021/02/20
22 1111(ID)  2021/02/21
23 1111(ID)  2021/02/22
24 1111(ID)  2021/02/23
25 1111(ID)  2021/02/24
26 1111(ID)  2021/02/25
27 1111(ID)  2021/02/26
28 1111(ID)  2021/02/27
29 1111(ID)  2021/02/28
30 2222(ID)  2021/02/01
31 2222(ID)  2021/02/02
32 2222(ID)  2021/02/03
33 2222(ID)  2021/02/04
34 2222(ID)  2021/02/05
35 2222(ID)  2021/02/06
36 2222(ID)  2021/02/07
37 2222(ID)  2021/02/08
38 2222(ID)  2021/02/09
39 2222(ID)  2021/02/10
40 2222(ID)  2021/02/11
41 2222(ID)  2021/02/12
42 2222(ID)  2021/02/13
43 2222(ID)  2021/02/14
44 2222(ID)  2021/02/15
45 2222(ID)  2021/02/16
46 2222(ID)  2021/02/17
47 2222(ID)  2021/02/18
48 2222(ID)  2021/02/19
49 2222(ID)  2021/02/20
50 2222(ID)  2021/02/21
51 2222(ID)  2021/02/22
52 2222(ID)  2021/02/23
53 2222(ID)  2021/02/24
54 2222(ID)  2021/02/25
55 2222(ID)  2021/02/26
56 2222(ID)  2021/02/27
57 2222(ID)  2021/02/28
・ツリー全体表示

【81960】Re:指定範囲の繰り返しコピーについて
お礼  daikonsan  - 22/2/14(月) 9:09 -

引用なし
パスワード
   ▼マナ さん:
ありがとうございます。
想定した動きになりました!
・ツリー全体表示

【81959】Re:指定範囲の繰り返しコピーについて
発言  マナ  - 22/2/12(土) 20:24 -

引用なし
パスワード
   ▼daikonsan さん:

Sub rest()
  Dim r As Range
  Dim n As Long
  
  n = 2
  
  Set r = Range("F2", Cells(Rows.Count, 6).End(xlUp))
  r.Copy r.Resize(r.Count * (n + 1))
  
End Sub
・ツリー全体表示

【81958】指定範囲の繰り返しコピーについて
質問  daikonsan  - 22/2/12(土) 17:28 -

引用なし
パスワード
     F(F列)
  項目名
2  2022/02/01
3  2022/02/02
4  2022/02/03
5  |
29 2022/02/28

上記のように値が設定されており、月の日付を任意の回数分下のセル(30行以降)に繰り返しコピーしていくにはどのように記述すればよろしいでしょうか。
結果的に以下のように任意の回数コピペが出来ればベストです。
offsetを使う必要があるのは分かっているのですが、具体的にどのように記述をすれば良いかがうまく掴めません。
ご教授いただけると幸いです。

  F(F列)
  項目名
2  2022/02/01
3  2022/02/02
4  2022/02/03
  |(省略)
29 2022/02/28
30 2022/02/01
31 2022/02/02
32 2022/02/03
  |(省略)
58 2022/02/28
59 2022/02/01
60 2022/02/02
61 2022/02/03
  |(省略)
87 2022/02/28
・ツリー全体表示

【81957】Re:テーブル名を変数にして繰り返し処理...
お礼  ウォル  - 22/2/5(土) 0:27 -

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

ご返信いただきありがとうございます。
無事組むことができました!
本当にありがとうございました!
・ツリー全体表示

【81956】Re:テーブル名を変数にして繰り返し処理...
発言  マナ  - 22/2/4(金) 21:57 -

引用なし
パスワード
   ▼ウォル さん:

Sub test()
  Dim tbl As ListObject
  
  For Each tbl In ActiveSheet.ListObjects
    MsgBox tbl.Name
  Next
  
  Dim k As Long
  
  For k = 1 To ActiveSheet.ListObjects.Count
    MsgBox ActiveSheet.ListObjects(k).Name
  Next
  
  For k = 1 To 8
    MsgBox ActiveSheet.ListObjects("テーブル" & k).Name
  Next
  
End Sub
・ツリー全体表示

【81955】テーブル名を変数にして繰り返し処理をし...
質問  ウォル  - 22/2/4(金) 20:56 -

引用なし
パスワード
   こんにちは。よろしくお願いいたします。
タイトルの件ですが、特定の項目(所持数)に対して昇順ソートをかけるという処理で、

With ActiveSheet.ListObjects("テーブル1")
    .Range.Sort key1:=.ListColumns("所持数").Range, order1:=xlAscending, Header:=xlYes
  End With

これでテーブル1つの処理はできるのですが、同じようなテーブルが1〜8まであるので、FORループを使って一度に処理出来ればと思っています。
ループ時にテーブル名を1,2,3…としていくにはどのように書けば良いでしょうか。

以上、よろしくお願いいたします。
・ツリー全体表示

【81954】Re:別ブックからのシートのコピーがうま...
発言  チンコ  - 22/2/1(火) 19:15 -

引用なし
パスワード
   よく解ってませんが、コピーするシートのデータ量が多いとか?
保護の状態は?
違っていたらすみません。
・ツリー全体表示

【81953】Re:別ブックからのシートのコピーがうま...
発言  マナ  - 22/1/31(月) 19:22 -

引用なし
パスワード
   ▼モモ さん:

こちらで試した限りでは再現できません。
コードに問題はないということです。
まずはマクロブックまたはコピー元のブック
どちらに問題があるか確認してはどうでしょうか。
・ツリー全体表示

【81952】Re:別ブックからのシートのコピーがうま...
発言  モモ  - 22/1/31(月) 17:54 -

引用なし
パスワード
   ▼マナ さん:
>▼モモ さん:
>
>コードに問題ないと思いますはが
>手作業では、シートコピー可能なのでしょうか。

手作業ではコピー可能でした。
共有フォルダを使用していたため、そのせいかもと思い
デスクトップに移動して使用してもダメでした・・・
・ツリー全体表示

【81951】Re:シート間のデータコピーでエラー
お礼  ackkn  - 22/1/30(日) 12:28 -

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

>わたしからは、これで終わりにさせてください。
今回は、本当に色々な考え方をお教えいただき、ありがとうございました。

>
>現在、この掲示板を見ている回答者は
>残念ながら、ほとんどいない気がします。
>他で再質問するほうがよいかもしれません。
本当ですか!!
昔からお世話になった方々も、どこへ行かれたのでしょうか?
確かに、ここへの投稿、投稿のたびにエラーが出て、??と思って
いましたが、そうなんですね。

どこに行けばいいのでしょうか?
・ツリー全体表示

【81950】Re:シート間のデータコピーでエラー
発言  マナ  - 22/1/30(日) 11:58 -

引用なし
パスワード
   ▼ackkn さん:

>下の1行でも、罫線も消えますし

そのように、具体的に何が問題なのか
説明していただけると助かります。

こちらとしては、提示されたコードを見で
{ちょっと冗長」以前の話として
フィルタ後のコピー動作について
少し誤解があるように惧しました。

お互いに嫌な思いをするのも馬鹿らしいですよね。
わたしからは、これで終わりにさせてください。

現在、この掲示板を見ている回答者は
残念ながら、ほとんどいない気がします。
他で再質問するほうがよいかもしれません。
・ツリー全体表示

【81949】Re:シート間のデータコピーでエラー
回答  ackkn  - 22/1/30(日) 11:00 -

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

>空白行が途中に挿入されることはないですよ。
>一番下に貼り付けられるだけです。
>もともと空白の行に、空白行を上書きするだけなので
>結果だけみると区別つかないと思いますが?

マナさんらしくないと思います。
「なればいい」、自分だけのツールでも私はしません。
技術も無いくせにと思われても、人の力を借りてでも
思いを通します。 これは性分でしょう。

今回は、集計表も印刷して他人が使いますし、その後の
スケジュール表も同様です。
下の1行でも、罫線も消えますし。
・ツリー全体表示

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