Excel VBA質問箱 IV

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

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


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

【81729】Re:複数列から特定の条件を含むセルをク...
お礼  事務担当初心者  - 21/4/18(日) 11:16 -

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

お教えいただきありがとうございます。

B列でセルの結合をしており、B列では発動できなかったので
K列のみで実施してみたところ発動し、感動いたしました。
(K列に植えていた(笑)式も消えてしまいましたが。。)

B列での形式を変える等をし、K列で植えている式が消えないよう
工夫してみます。

早急にご回答いただき、感謝いたします。
誠にありがとうございます。
・ツリー全体表示

【81728】Re:複数列から特定の条件を含むセルをク...
回答  γ  - 21/4/18(日) 10:03 -

引用なし
パスワード
   こんな感じですかね。
Sub testA()
  Dim cols As Variant
  Dim s  As String
  Dim r  As Long
  Dim c  As Variant

  cols = "B,K,L,O,AA"       '対象列
  s = Sheet1.Range("H3") & Sheet1.Range("H4") 'つなげた文字列という前提
  With Sheet2
    For Each c In Split(cols, ",")
      For r = 6 To 400
        If InStr(.Cells(r, c).Value, s) > 0 Then .Cells(r, c).ClearContents
      Next
    Next
  End With
End Sub

# 式や関数は"植える"ものなんですねえ。(さすが瑞穂の国ですw)

# 最近、返事の無い方が見られますが、そうならない範を示して頂きたい。
・ツリー全体表示

【81727】複数列から特定の条件を含むセルをクリア...
質問  事務担当初心者  - 21/4/18(日) 7:52 -

引用なし
パスワード
   宜しくお願い致します。

■複数列から特定の条件を含むセルをクリアするマクロ
 
複数列:sheet2のB列、K列、L列、O列、AA列のそれぞれ6行目から400行目
特定の条件:sheet1のセル(H3)と(H4)の両方の値を含む
      sheet2のB列から順番に該当セルをクリアしたい
      ※B列からK列に反映する関数をK列の一部に植えているので
       関数を保護するために先にB列から消したいです。


具体的に申しますと

sheet1のH3→1年
sheet1のH4→2組

※仕様上、セルH3に「1年2組」と指定せず、H3とH4の別のセルにしています。


sheet2のB列の内容↓
1年1組5番
1年2組38番←38番という番号も含めてこのセルをクリア
1年3組7番
1年2組6番←このセルをクリア
2年2組12番
3年1組9番
1年5組18番
1年2組2番←このセルをクリア
1年2組9番←このセルをクリア
4年2組30番
6年2組60番
1年2組35番←このセルをクリア

sheet2のK列の内容↓
1年2組5番←このセルをクリア
1年4組7番
1年9組6番
2年7組12番
3年8組9番
1年6組18番
1年2組38番←このセルはB列から反映しているので
      B列のセルがクリアになるとセルに植えている
      関数は消えないようにしたいです
1年3組2番
1年2組89番←このセルをクリア
4年2組30番
6年2組76番
1年2組58番←このセルをクリア

他のsheet2のL列、O列、AA列も同じです。

このような作業を実現することは可能でしょうか?
宜しくお願い致します。
・ツリー全体表示

【81726】Re:シート内のすべてのピボットテーブル...
発言  マナ  - 21/4/13(火) 17:22 -

引用なし
パスワード
   ▼やまと さん:

これで、どうなりますか?

PT.ClearAllFilters
For Each itm In PT.PivotFields("納品番号").PivotItems
  Select Case itm.Value
    Case "QQQQ", "AAAA"
      itm.Visible = False
  End Select
Next itm

あるいは

For Each itm In PT.PivotFields("納品番号").PivotItems
  If itm.RecordCount > 0 Then
    Select Case itm.Value
      Case "QQQQ", "AAAA"
        itm.Visible = False
      Case Else
        itm.Visible = True
    End Select
  End If
Next itm
・ツリー全体表示

【81725】シート内のすべてのピボットテーブルに対...
質問  やまと  - 21/4/13(火) 9:52 -

引用なし
パスワード
   質問失礼します。シート内に複数あるピボットテーブル(項目等はすべて同じ)に対して、同じフィルターをかけるコードを記述していますが、
「PivotitemクラスのVisibleプロパティを設定できません。」とエラーがでてきてうまくいきません。
当方VBA初心者なので、皆さんのお力を借りたいです。。以下、コードです。


Dim PT As PivotTable
Dim WS As Worksheet
Dim itm As PivotItem
  For Each WS In ThisWorkbook.Worksheets
    For Each PT In WS.PivotTables
    For Each itm In PT.PivotFields("納品番号").PivotItems
      Select Case itm.Value
        Case "QQQQ", "AAAA"
          itm.Visible = False
        Case Else
          itm.Visible = True
      End Select
    Next itm
  Next PT
  Next WS
End Sub
・ツリー全体表示

【81724】Re:Excel 関数のやり方教えてください
発言  山内  - 21/4/8(木) 14:07 -

引用なし
パスワード
   Excel 質問とかで検索してたどり着いたんでしょうけど
ここはExcelのVBA(有り体に言えばプログラミング)という分野の質問をする場所です。
一般的なExcelの操作でしたら他のサイトをあたりましょう。
・ツリー全体表示

【81723】Re:Dir関数内でMoveFileについて
お礼  トム  - 21/4/8(木) 13:14 -

引用なし
パスワード
   ▼山内 さん:
>移動できます
>コードが間違ってるだけかと思います

そうなんですね。
それを聞いて安心しました。
もう一度コード見直します。
ありがとうございました。
・ツリー全体表示

【81722】Excel 関数のやり方教えてください
質問    - 21/4/8(木) 10:32 -

引用なし
パスワード
   Excelで関数を使用し、左に文字を入力したら右側に入力済みの文字を反映させたいのですが、可能なのでしょうか。

例えば
AT列45行目に何か(都道府県等)入力したら
AU列45行目に前日キャンセルと言う文字が出てくる。

ただ、全日キャンセルの文字はAT列45行目が空白の時は見えなくなる。
と言うようなことはできるのでしょうか。

教えてください。。。
・ツリー全体表示

【81721】Re:Dir関数内でMoveFileについて
回答  山内  - 21/4/8(木) 8:51 -

引用なし
パスワード
   移動できます
コードが間違ってるだけかと思います
・ツリー全体表示

【81720】Dir関数内でMoveFileについて
質問  トム  - 21/4/7(水) 22:56 -

引用なし
パスワード
   こんにちは。
質問が有ります。

Dir関数で特定のフォルダ内のExcelファイルを検索して、
そのExcelファイルでの処理を終えた後に、
そのExcelファイルを別フォルダに移動しようと考えています。

ですが実際に動かしてみると繰り返しのdir()の1行上でファイルを移動するとした場合、
dir()の段階でファイルが存在しないとエラーで弾かれ、
だったらdir()の後ろにファイルを移動するとした場合でもdir()の段階で弾かれました。

お聞きしたいのは一旦dir関数で検索を始めてしまったフォルダ内のファイルは、
dir関数を抜けるまでは移動してはいけないのでしょうか?
・ツリー全体表示

【81719】Re:勤怠表Time関数条件設定
回答  Emma E-MAIL  - 21/4/6(火) 23:48 -

引用なし
パスワード
   ▼γ さん:
>こちらは、(Excelの)VBAに限定した質問掲示板なので、
>別のところをあたってください。


すみませんでした。
・ツリー全体表示

【81718】Re:勤怠表Time関数条件設定
発言  γ  - 21/4/6(火) 23:43 -

引用なし
パスワード
   こちらは、(Excelの)VBAに限定した質問掲示板なので、
別のところをあたってください。
・ツリー全体表示

【81717】勤怠表Time関数条件設定
質問  Emma E-MAIL  - 21/4/6(火) 22:35 -

引用なし
パスワード
   D9に始業時間
E9に就業時間が入っています。

8:30-17:30が通常勤務時間です。
8:30前と17:30以降が残業時間です。

8:30前の残業時間を条件に追加したいのですが、
どのように追加したらよいでしょうか。

=IF(E9>TIME(17,30,0),E9-TIME(17,30,0),IF(AND(E9>=TIME(0,0,0),E9<=TIME(8,30,0)),E9+"24:00"-TIME(17,30,0),""))

また休日だった場合、C9に曜日が書かれています。(土、日、祝)
4時間以内が10000円、9時間以内が20000円、それ以降は、2500円の残業代を払いたいです。
どのように設定したらよろしいでしょうか。
アドバイスを頂けますでしょうか。よろしくお願いいたします。
・ツリー全体表示

【81716】Re:averageifs関数の条件に変数を使用し...
発言  マナ  - 21/4/4(日) 19:45 -

引用なし
パスワード
   ▼初心者 さん:

>Range("B2:B" & a), ">b-1", Range("B2:B" & a), "<=b")

こうでは

Range("B2:B" & a), ">" & b-1, Range("B2:B" & a), "<=" & b)
・ツリー全体表示

【81715】Re:averageifs関数の条件に変数を使用し...
お礼  初心者  - 21/4/4(日) 15:02 -

引用なし
パスワード
   >山内 さん
ご回答ありがとうございます。

">b-1" → ">" & b & "-1"
"<=b" → "<=" & b
と上記通りに書き換えてみたところ、
コンパイルエラー: 修正候補:区切り記号または )
と出て来てしまいました。

どう対処すればよろしいでしょうか?
・ツリー全体表示

【81714】Re:特定の文字検索し、その一文字前に特...
発言  γ  - 21/4/3(土) 21:04 -

引用なし
パスワード
   一例です。
Sub test()
  Dim s1 As String  '元の文字列
  Dim s2 As String  '中間項
  Dim s3 As String  '結果の文字列
  Dim p As Long

  s1 = "あいうえおあいうえ(お)あいうえお(あ)いうえお……"

  Do
    p = InStrRev(s1, "(")
    If p > 0 Then
      s2 = "☆" & Mid(s1, p - 1) & s2
      s1 = Left(s1, p - 2)
    Else
      s3 = s1 & s2
      Exit Do
    End If
  Loop
  Debug.Print s3
End Sub
・ツリー全体表示

【81713】特定の文字検索し、その一文字前に特定文...
質問  初心者です  - 21/4/3(土) 19:24 -

引用なし
パスワード
   エクセルでハイパーリンク先のテキストファイルを開くときに、開くテキストの文字列の中から特定の文字を検索して、その一文字前の文字の前に特定の文字列を追加したいのです。

 例えば、「あいうえおあいうえ(お)あいうえお(あ)いうえお……」とあったとして、"("を検索して"☆"を入れるとします。
結果として、「あいうえおあいう☆え(お)あいうえ☆お(あ)いうえお……」としたいのです。

すみません。どなたか教えていただけないでしょうか。
・ツリー全体表示

【81712】Re:RoundUp関数の処理が重くなってしまう
発言  山内  - 21/4/1(木) 18:09 -

引用なし
パスワード
   訂正
For i = 2 To UBound(v)

For i = 1 to UBound(v)

Range("J2:J" & r) = v

WorkSheets("Sheet2").Range("J2:J" & r) = v
に書き換えてください
・ツリー全体表示

【81711】Re:RoundUp関数の処理が重くなってしまう
回答  山内  - 21/4/1(木) 17:47 -

引用なし
パスワード
   50000行ものセルをいちいち書き換えてたら条件付をしてもかなり重いです
配列を使いましょう

Sub Sample()
  Dim v As Variant
  Dim i As Long, r As Long
  With Worksheets("Sheet2")
    r = .Cells(Rows.Count, 10).End(xlUp).Row
    v = .Range("J2:J" & r)
  End With
  
  For i = 2 To UBound(v)
    If v(i, 1) - Int(v(i, 1)) > 0 Then
      v(i, 1) = Int(v(i, 1)) + 1
    End If
  Next
  
  Range("J2:J" & r) = v
  
End Sub
・ツリー全体表示

【81710】Re:averageifs関数の条件に変数を使用し...
回答  山内  - 21/4/1(木) 17:02 -

引用なし
パスワード
   ">" & b & "-1"
"<=" & b

Range("C2:C" & a)と書いてる部分と同じ要領です
・ツリー全体表示

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