Excel VBA質問箱 IV

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

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


2 / 3831 ページ ←次へ | 前へ→

【82261】Re:シートの中から必要なセルを複数取り...
質問  かずこ  - 24/1/22(月) 23:13 -

引用なし
パスワード
   ▼マナ さん:
>▼かずこ さん:
>
>>別シートに張り付けて並び替える
>
>並び替えのルールを教えてください


ご返信ありがとうございます。

並び替えが少し複雑で、説明が伝わりづらかったら申し訳ありません。
また、もし不可能でしたら全然構いません。

@ レーン番号の頭3桁と、中2桁が一致しているものは同じ列にまとめて、下1桁の数字で下から上に昇順で並び替えます。(データ同士の間の空白は不要です)

A @で作成したセルデータをひとまとまりとし、そこから又並び替えをします。
 レーン番号の頭3桁が同じ@は同じ行にまとめ、今度はレーン番号の真ん中2桁で左から昇順で並び替え  ます。(間の空白は不要です)

B Aで作成したひとかたまりを並び替えます。
 シートの上から下に、レーン番号の頭3桁を昇順で並び替えます。
 (左詰で、間に空白行をお願いします。)


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

【82260】Re:シートの中から必要なセルを複数取り...
発言  マナ  - 24/1/22(月) 22:28 -

引用なし
パスワード
   ▼かずこ さん:

>別シートに張り付けて並び替える

並び替えのルールを教えてください
・ツリー全体表示

【82259】Re:シートの中から必要なセルを複数取り...
質問  かずこ  - 24/1/22(月) 22:03 -

引用なし
パスワード
   ご返信ありがとうございます。
1つのレーン番号と、レーン番号の真下にあるデータをセットとして扱いたいのですが、シート上では間に空白セルがなく連なっているパターンもあります。
よろしくお願いいたします。
・ツリー全体表示

【82258】Re:シートの中から必要なセルを複数取り...
発言  マナ  - 24/1/22(月) 19:26 -

引用なし
パスワード
   ▼かずこ さん:

>レーン番号があるセルから1つずつ下に参照していき、次に空白セルか別のレーン番号があるセルまでを参照するという条件分岐は作成可能でしょうか。

空白セルで分割するだけではだめということでしょうか。
・ツリー全体表示

【82257】Re:別シートから一致する項目をすべて引...
発言  マナ  - 24/1/22(月) 19:00 -

引用なし
パスワード
   ▼迷える羊 さん:

>Set d(c.Value) = CreateObject("system.collections.arraylist")
>がオートメーションエラーとなってしまいます、、


arraylistが使えない環境ということですね。
Excelの標準機能だけを使うようにしました。

Sub test2()
  Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
  Dim r As Range, c As Range

  
   Set ws1 = Sheets("Sheet1")
    Set ws2 = Sheets("Sheet2")
    
    ws1.Rows(1).Insert
    ws1.Cells(1).Resize(, 2).Value = Array("t1", "t2")
    ws2.Rows(1).Insert
    ws2.Cells(1).Resize(, 2).Value = Array("t2", "t1")
    
  Set ws3 = Worksheets.Add
  Set r = ws3.Cells(1)
  Set c = ws3.Cells(5).Resize(2)
  c(2).Formula = "=countif(" & ws1.Name & "!A:A,B2)>0"
  
  ws2.Cells(1).CurrentRegion.AdvancedFilter xlFilterCopy, c, r
  Set r = r.CurrentRegion
  
  With r.Worksheet.Sort
    .SortFields.Clear
    .SortFields.Add2 _
      Key:=r.Columns(2), _
      CustomOrder:=WorksheetFunction.TextJoin(",", True, ws1.Columns(1))
    .SetRange r
    .Header = xlYes
    .Apply
  End With
  
  r.AdvancedFilter xlFilterCopy, , ws1.Cells(2)
  
  Application.DisplayAlerts = False
  ws3.Delete
  Application.DisplayAlerts = True
    ws1.Rows(1).Delete
    ws2.Rows(1).Delete
    
    ws1.Activate
    
End Sub
・ツリー全体表示

【82256】シートの中から必要なセルを複数取り出し...
質問  かずこ  - 24/1/22(月) 17:43 -

引用なし
パスワード
   vba初心者です。よろしくお願いいたします。

下記は質問の為に作成した例になります。

-----------------------------------------
[Sheet1]

   A列

1行目 918-01-1

2行目 MJIxPUS/
   RDXU2126441
   20   3.6
   TNK    (E)


3行目

4行目 A14-03-2

5行目 MJIxPUS/

6行目 DKOU2405691

7行目 20   3.7

8行目 TNK    (E)

9行目 3/1123

10行目

11行目

12行目 D13-03-2

13行目

-----------------------------------------

※1行目の 918-01-1 や12行目の D13-03-2 を下記便宜上「レーン番号」と書きます

※前段階でpdfデータをエクセルデータに変換しているため、同じデータでもセル数が異なっています。←ここがとても厄介です

※12行目のような下のセルが空白のレーン番号は必要ありません。※そのレーン番号のあるセルは削除していただいても構いません。


このようにデータがシート上にちりばめられており、上記の例で必要なデータは、1行目から2行目と4行目から9行目です。
(データはシート上にたくさんあり、4行目から9行目のようなパターンだとセル数が4〜5と変動します)

ワイルドカード( "[ABC]##-##-#" と "###-##-#")などで頭のセルを見つけ、その下のセルをどこまで参照するかを条件分岐したいのですが、いいアイデアが思いつきません。

レーン番号があるセルから1つずつ下に参照していき、次に空白セルか別のレーン番号があるセルまでを参照するという条件分岐は作成可能でしょうか。

また、参照したセルを別シートに張り付けて順番に並べ替えるコードも教えていただけないでしょうか。


複雑になるかと思いますのでヒントだけでもいただけたら助かります。よろしくお願いいたします。
・ツリー全体表示

【82255】Re:別シートから一致する項目をすべて引...
質問  迷える羊  - 24/1/22(月) 15:23 -

引用なし
パスワード
   ▼マナ さん:
ありがとうございます!
それらはうまく進むことができました!

ですが、
Set d(c.Value) = CreateObject("system.collections.arraylist")
がオートメーションエラーとなってしまいます、、
データをとても小さく数行にしてもエラーになってしまいます、

どうしたらよいか教えてほしいです、すみません。
・ツリー全体表示

【82254】Re:別シートから一致する項目をすべて引...
発言  マナ  - 24/1/22(月) 12:58 -

引用なし
パスワード
   ▼迷える羊 さん:


>>  Dim d As Object, k
>kはVariantですかね?

はい。Variantです。


>また、
>>  For Each k In d.keys
>>    a.addrange dic(k)
>のdicでSubまたはFunctionが定義されていないと言われてしまいました。
>

ごめんなさい。動作確認しないで投稿していました。
dic(k) でなく、d(k) でした。
 
 
     
・ツリー全体表示

【82253】Re:別シートから一致する項目をすべて引...
質問  迷える羊  - 24/1/22(月) 11:28 -

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

早々にご回答ありがとうございます!
>  Dim d As Object, k
kはVariantですかね?

また、
>  For Each k In d.keys
>    a.addrange dic(k)
のdicでSubまたはFunctionが定義されていないと言われてしまいました。

当初ユーザーフォームに入れていたせいかと思い、
標準モジュールに移動したのですが、
同じくだめでした。
・ツリー全体表示

【82252】Re:別シートから一致する項目をすべて引...
発言  マナ  - 24/1/21(日) 23:11 -

引用なし
パスワード
   ▼迷える羊 さん:

Sub test()
  Dim ws1 As Worksheet, ws2 As Worksheet
  Dim c As Range
  Dim d As Object, k
  Dim v, i As Long, s As String
  Dim a As Object
  
  Set ws1 = Sheets("Sheet1")
  Set ws2 = Sheets("Sheet2")
  Set d = CreateObject("scripting.dictionary")
  
  For Each c In ws1.Columns(1).SpecialCells(xlCellTypeConstants)
    Set d(c.Value) = CreateObject("system.collections.arraylist")
  Next
  
  v = ws2.Cells(1).CurrentRegion.Value
  For i = 1 To UBound(v)
    s = v(i, 2)
    If d.exists(s) Then d(s).Add v(i, 1)
  Next
  
  Set a = CreateObject("system.collections.arraylist")
  
  For Each k In d.keys
    a.addrange dic(k)
  Next

  ws1.Cells(2).Resize(a.Count).Value = Application.Transpose(a.toarray)
  
End Sub
・ツリー全体表示

【82251】Re:別シートから一致する項目をすべて引...
発言  迷える羊  - 24/1/21(日) 21:12 -

引用なし
パスワード
   ▼マナ さん:
>Sheet2にあって、Sheet1にない項目はありますか
>その逆、Sheet1にあって、Sheet2にない項目はありますか
sheet2はフルで網羅してありますので、
sheet2にあって、sheet1にない項目はあります。
sheet1にあってsheet2にない項目はありません。
よろしくおねがいいたします。
・ツリー全体表示

【82250】Re:別シートから一致する項目をすべて引...
発言  マナ  - 24/1/20(土) 13:10 -

引用なし
パスワード
   ▼迷える羊 さん:

Sheet2にあって、Sheet1にない項目はありますか
その逆、Sheet1にあって、Sheet2にない項目はありますか
・ツリー全体表示

【82249】別シートから一致する項目をすべて引っ張...
質問  迷える羊  - 24/1/19(金) 13:21 -

引用なし
パスワード
   はじめまして、よろしくおねがいいたします。

[sheet1]    [sheet2]
A列   B列  A列 B列
いちご     123 いちご
みかん     234 りんご
りんご     345 みかん
ぶどう     456 いちご
        567 りんご
        678 りんご
とあった場合、
B列には
まず[sheet1]A列の「いちご」に該当する[sheet2]A列のものを、
次に[sheet1]A列の「みかん」に該当する[sheet2]A列のものを、
と並べていきたいです。

[sheet1]    [sheet2]
A列   B列  A列 B列
いちご  123  123 いちご
みかん  456  234 りんご
りんご  345  345 みかん
ぶどう  234  456 いちご
     567  567 りんご
     678  678 りんご

[sheet1]A列とB列は行で揃っていなくても構わないのですが、
どのように引っ張ってくればできるのでしょうか。
どなたかご教示願います。
・ツリー全体表示

【82248】Re:フィルターと印刷
お礼  まき  - 23/12/29(金) 2:40 -

引用なし
パスワード
   ありがとうございます。
・ツリー全体表示

【82247】Re:フィルターと印刷
発言  もうすぐ正月  - 23/12/25(月) 17:22 -

引用なし
パスワード
   ▼まき さん:
>A列でフィルターをかけ昇順に並べ替えてA列のあるページのみ印刷。
>D列でフィルターをかけ昇順に並べ替えてD列のあるページのみ印刷。
>G列で…。

とか解りませんが、範囲は指定できますよ
こんな感じに

ActiveSheet.PageSetup.PrintAriea = "A1:E5"
ActiveSheet.PrintPreview

ActiveSheet.Range("A2:C10").PrintPreview
・ツリー全体表示

【82246】Re:チェックボックスを空白セルにしたい。
発言  もうすぐ正月  - 23/12/25(月) 17:05 -

引用なし
パスワード
   どんな種類なのか解らないけど

フォームのチェックボックスの場合
なおフレーム使用時は試してない

ActiveSheet.CheckBoxes = xlOff

それと、どこかのセルとリンクさせておけば
そのセルの内容を消す事でオフになってたような
その際リンクさせるセルを集めておけば
Range("A1:A5").value = empty
Range("A1:A5").value = ""
でいいじゃないですかね?
・ツリー全体表示

【82245】フィルターと印刷
質問  まき  - 23/12/23(土) 21:44 -

引用なし
パスワード
   A列からV列まで項目ごとにデータが入っています。
ページ数にすると30ページ分くらいあります。
A列でフィルターをかけ昇順に並べ替えてA列のあるページのみ印刷。
D列でフィルターをかけ昇順に並べ替えてD列のあるページのみ印刷。
G列で…。
のように一部の列のみを印刷する方法や繰り返してできる方法があれば教えていただきたいです。
よろしくお願いします。
・ツリー全体表示

【82244】チェックボックスを空白セルにしたい。
質問  にゃんたん  - 23/12/18(月) 12:21 -

引用なし
パスワード
   [VBA]フォームを使わない軽量チェックボックスで幸せになろう

上記のサイトを参考にただの図形にマクロ文を入れてチェックボックスとして利用しています。
※以下チェックボックスの定義はこの文書とする。

このチェックボックスがアクティブシート上に複数あります。仮にチェックマークを外すという名前のボタン1つをクリックするだけで、アクティブシート上にあるチェックボックスにチェックマーク(文字コード2713)がついているものを外したいです。言い換えると空白にしたい(マクロ文は削除したくない)です。

このVBAを組むことはできますでしょうか?
よろしくお願いいたします。
・ツリー全体表示

【82243】ピポッドテーブル スライサーについて
質問  もも  - 23/12/12(火) 18:00 -

引用なし
パスワード
   ピポッドテーブルの集計アイテムで集計結果の列を追加した上で、
スライサーを使用すると、スライサーにて洗濯した対象意外の行も表示
されてしまい、フィルター機能として活用できない状態になってしまいまきた。
解消法についてご教示ください。
・ツリー全体表示

【82242】Re:条件追加
お礼  いとう  - 23/12/12(火) 16:28 -

引用なし
パスワード
   非常にたすかりました。

何個も条件追加できてよかったです。

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

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