Excel VBA質問箱 IV

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

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


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

【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)と書いてる部分と同じ要領です
・ツリー全体表示

【81709】averageifs関数の条件に変数を使用したい
質問  初心者  - 21/4/1(木) 10:54 -

引用なし
パスワード
   averageifs関数の条件部分に変数を指定したいのですが、どうも文字列として認識されてしまっているようです(下記の>b−1と<=bの部分)。
どうにかならないでしょうか?

B列に1〜280までの数字が沢山、
C列に平均値を出したいデータが並んでいます。
番号別の平均値はD列に出したいです。

Dim a
a = Worksheets("Sheet2").Cells(Rows.Count, 2).End(xlUp).Row

Dim b As Double
On Error Resume Next
For b = 1 To 280
Cells(b + 1, 4) = WorksheetFunction.AverageIfs(Range("C2:C" & a), Range("B2:B" & a), ">b-1", Range("B2:B" & a), "<=b")
Next b
・ツリー全体表示

【81708】RoundUp関数の処理が重くなってしまう
質問  rau  - 21/4/1(木) 10:33 -

引用なし
パスワード
   RoundUp関数を用いて、J列に並んでいる1,1,1,1, 1.222, 2,2,2,2,2…といった感じに整数の間にたまに小数まじりが出てくる数値の小数点を切り上げたいと考え、下記のマクロを作成しました。

’J列に並んでいる数値を小数点切り上げる
Dim m, o
For m = 2 To Worksheets("Sheet2").Cells(Rows.Count, 10).End(xlUp).Row
o = Cells(m, 10).Value
Cells(m, 10).Value = Application.WorksheetFunction.RoundUp(o, 0)
Next m

J列の最終行(=&#8575;)が大体50,000程度あり、PCのスペックが足りないのか処理落ちして固まってしまいます。

Ifの条件分岐で整数ならば何もしない、小数ならばRoundUpで整数に丸める、といった風に出来るのでしょうか?
何か良い案があれば教えて欲しいです。
宜しくお願い致します。
・ツリー全体表示

【81707】Re:一つのフォルダ内にあるエクセルファ...
発言  マナ  - 21/3/28(日) 21:03 -

引用なし
パスワード
   ▼[名前なし]あsd さん:

たたき台です。まずは、これを実行してみてください。
mergeシートにデータを統合します。


Sub test()
  Dim p As String
  Dim fn As String
  Dim ws As Worksheet
  
  With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show Then
      p = .SelectedItems(1) & "\"
    Else
      Exit Sub
    End If
  End With
  
  Set ws = ThisWorkbook.Worksheets("merge")
  ws.UsedRange.Offset(1).ClearContents
  
  fn = Dir(p & "*.xlsx")
  
  Do While fn <> ""
    With Workbooks.Open(p & fn)
      .Sheets(1).UsedRange.Offset(1).Copy _
      ws.Range("a" & Rows.Count).End(xlUp).Offset(1)
      .Close False
    End With
    fn = Dir()
  Loop
  
End Sub
・ツリー全体表示

【81706】Re:Aの期間がBの期間に入っているかを判...
お礼  vba1年生  - 21/3/26(金) 13:41 -

引用なし
パスワード
   ▼山内 さん:
>セルE1
>=IF(SUMPRODUCT(($C$1:$C$50<=A1)*($D$1:$D$50>=B1))>=1,"〇","×")
>これでどうでしょうか
>表の範囲がわからないのでそこは変えてください

ありがとうございます!
考えていたことができました!大変助かりました。
・ツリー全体表示

【81705】Re:Aの期間がBの期間に入っているかを判...
回答  山内  - 21/3/26(金) 13:26 -

引用なし
パスワード
   セルE1
=IF(SUMPRODUCT(($C$1:$C$50<=A1)*($D$1:$D$50>=B1))>=1,"〇","×")
これでどうでしょうか
表の範囲がわからないのでそこは変えてください
・ツリー全体表示

【81704】Re:Aの期間がBの期間に入っているかを判...
回答  vba1年生  - 21/3/26(金) 12:17 -

引用なし
パスワード
   ▼山内 さん:
>E1セル
>=IF(AND(A1>=C1,B1<=D1),"〇","×")
>これを下にオートフィルとかでよろしいんじゃないでしょうか
>あえてVBAでやる必要があるということでしたらまた考えてみます

ご回答ありがとうございます。

すべて横並びになっていればそれもできるのですが、
A-BとC-Dが同じ行にありません。

ですので処理的には、たとえば1行目のA-B期間が、すべての行のC-D期間を参照しに行き、その中のどれかに入っていれば〇、どれにも入っていない場合は×としたいです。
・ツリー全体表示

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