Excel VBA質問箱 IV

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

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


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

【79827】セル入力の半角
質問  りか  - 18/4/24(火) 11:39 -

引用なし
パスワード
   セルに
=関数("文字列",シート1!A1)
のように関数があるシートがあります。
(関数、文字列と参照先はセルによってバラバラです)

この関数の文字列の部分だけを半角(英数字とカナ)にし、
セル参照のシート名はそのままにすることはできませんでしようか?

上司かシートに記入してある文字をすべて半角にできるものは
半角にしろと言われていて、置換ではやってられないので、
マクロに一気に処理したいのです。
・ツリー全体表示

【79826】Re:フォーマットを別シートからのデータ...
質問  そら  - 18/4/23(月) 16:01 -

引用なし
パスワード
   みなさま、色々とアドバイスいただきありがとうございます。。
自分で少し考えてみましたので、質問内容を変えてもよいでしょうか?

If Worksheets("まとめシート").Range("C3") = "" Then
Worksheets("まとめシート").Range("C3") = Worksheets("xxxxx").Range("C3")

上記の処理を以下のような形に持っていきたのですが、
どのような形にしたらよいのでしょうか?

1.Worksheets("xxxxx")の部分は、毎回シート名が違うため、
 Worksheets("まとめシート")の右隣のシートを参照するようにしたいです。

2.上記はC3の処理ですが、上記と同じようにまとめシートの方が空欄の場合、
 右隣のシートの同じセルのデータを貼り付ける、という処理を
 指定した範囲内で繰り返したいです。
 (C3:F1000と、I6:M1000、O4:R1000)

3.上記範囲内は、一部セルの結合がされているのですが、
 上手く貼り付けできるようにしたいです。
 (例:C3:C18、O4:Q10など)

何度も申し訳ありませんが、どうぞよろしくお願いいたします。
・ツリー全体表示

【79825】Re:フォーマットを別シートからのデータ...
お礼  そら  - 18/4/23(月) 15:51 -

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

ありがとうございます!
シートのフォーマットは、ちょっと複雑になっていて、
説明が難しいため、もし可能でしたら質問内容を変えますので、
そちらを確認いただいてもよいでしょうか・・?
申し訳ございません!


>▼そら さん:
>
>>項目が入った入力用フォーマットがあり、
>>フォーマットの一部分だけ入力されているシートが複数あります。
>>
>>一部だけ入力されたシートそれぞれから
>>統合用のフォーマットシート(入力欄はすべて空)を埋めていき、
>>すべての入力欄欄が埋まったシートを作成したい。
>
>シートのレイアウトを具体的に説明していただけますか。
>どんなフォーマットなのか全くイメージできません。
・ツリー全体表示

【79824】Re:フォーマットを別シートからのデータ...
お礼  そら  - 18/4/23(月) 15:31 -

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

ありがとうございます・・!
ただ私が初心者すぎて、上手く説明ができておらず申し訳ございません。。
数日間、再度自分で考えてみましたので、
再度、別途質問してもよいでしょうか・・?
もしよろしければアドバイスいただけますと幸いです。


>途中まで、
>
>Dim Shtb As Variant, sh As Worksheet,tt As Variant
>Shtb = Array("1111", "2222", "3333")
>On Error Resume Next
>For Each tt In Shtb
>  Set sh = Sheets(tt)
>  If Err Then
>    MsgBox tt & "が無い"
>  Else
>    If sh.Range("A1").Value = "" Then
>     MsgBox "シート" & tt & "のA1が空白の時の処理"
>    Else
>     MsgBox "シート" & tt & "のA1が空白で無い時の処理"
>    End If
>  End If
>  Err.Clear
>Next
>On Error GoTo 0
・ツリー全体表示

【79823】Re:フォーマットを別シートからのデータ...
発言  BJ  - 18/4/22(日) 23:02 -

引用なし
パスワード
   途中まで、

Dim Shtb As Variant, sh As Worksheet,tt As Variant
Shtb = Array("1111", "2222", "3333")
On Error Resume Next
For Each tt In Shtb
  Set sh = Sheets(tt)
  If Err Then
    MsgBox tt & "が無い"
  Else
    If sh.Range("A1").Value = "" Then
     MsgBox "シート" & tt & "のA1が空白の時の処理"
    Else
     MsgBox "シート" & tt & "のA1が空白で無い時の処理"
    End If
  End If
  Err.Clear
Next
On Error GoTo 0
・ツリー全体表示

【79822】Re:フォーマットを別シートからのデータ...
発言  マナ  - 18/4/20(金) 22:57 -

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

>項目が入った入力用フォーマットがあり、
>フォーマットの一部分だけ入力されているシートが複数あります。
>
>一部だけ入力されたシートそれぞれから
>統合用のフォーマットシート(入力欄はすべて空)を埋めていき、
>すべての入力欄欄が埋まったシートを作成したい。

シートのレイアウトを具体的に説明していただけますか。
どんなフォーマットなのか全くイメージできません。
・ツリー全体表示

【79821】Oracleをバージョンアップしたら不具合
質問  まいろねふ  - 18/4/20(金) 13:09 -

引用なし
パスワード
   客先の話ですが、Windowsを7から10に、Oracleを11gから12cにバージョンアップし、接続ミドルウェアをoo4oからADOに変更したところ、
SELECT文で選択したデータのうち、最初の100レコードだけ重複するエラーが発生したとの連絡がありました。

原因と対策を求めてネットを検索したところ、同様の環境で同様の現象が発生したという記事を1件だけ発見しましたが
DB接続時のプロバイダ名を「OraOLEDB.Oracle」から「MSDAORA」に変更したら直った旨の記述があったものの、現象の発生原因と直った理由までは書いてありませんでした。

そもそも自分のPC環境では現象自体が再現しない事もあり、何の根拠もなく「プロバイダ名を変えれば直る」
とは回答できない状況なので、
「なぜ100レコードだけ重複するのか」
「なぜプロバイダ名を変えたら直るのか」
の2点について、ご存知の方がおられましたら教えて頂ければ幸いです。よろしくお願い致します。

・Win7環境(正常に動作する)

OS:Windows7 pro sp1 32bit
Office:Excel2010 32bit
Oracle:11g


・Win10環境(正常に動作しない)

OS:Windows10 pro 64bit
Office:Excel2016 32bit
Oracle:12c
・ツリー全体表示

【79820】Re:VBAでcountifsを使用したい
お礼  ウメ  - 18/4/18(水) 22:29 -

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

返信ありがとうございます。説明が不十分で申し訳ありません。

詳細を記載しながら試行錯誤していたところ、自己解決しました。


お手数をおかけし大変申し訳ありません。
・ツリー全体表示

【79819】Re:VBAでcountifsを使用したい
発言  マナ  - 18/4/18(水) 19:39 -

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

>F2セルにその行で条件に合う(AND条件)ものをカウントしたいのですが
>文法で手間取っています。
>条件:A2>=1,B2>=2
>この場合、A2は"1"で、B2は"2"なので 1
>
>
>関数だと
>=COUNTIFS(A2:A2,">=1",B2:B2,">=2") で希望の結果になりましたが


どの範囲で、どんな条件でカウントしたいのか
上の説明を読んでもわかりません。

1行目の見タイトルとかC〜E列は全く関係ないのでしょうか。

もう一度、説明していただけますか
・ツリー全体表示

【79818】Re:商品の出荷開始月と終了月を求めたい
発言  マナ  - 18/4/18(水) 18:58 -

引用なし
パスワード
   ▼roo さん:
-
>現時点で丸2年分ありますが、これからも増える前提で表を作っています。

ということは、1行目の4月とか5月には、年の情報も含まれているのでしょうか?
それとも、必要なのは、開始「月」、終了「月」であって、
年までは不要なのでしょうか。
・ツリー全体表示

【79817】Re:VBA初心者です。ブック間の列コピーを...
お礼  atori  - 18/4/18(水) 16:11 -

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

>>For k = 1 To 999
>
>でなく、Do〜Loopを使う方法もあります。

kがはっきりしない場合だと見た目(?)としてはこっちのほうが良さそうですね、、、
でも確かに汎用性で考えるとFor使っておいたほうが安心みたいなところもありますね。ありがとうございます!
・ツリー全体表示

【79816】Re:フォーマットを別シートからのデータ...
質問  そら  - 18/4/18(水) 11:58 -

引用なし
パスワード
   ▼よろずや さん:
>>という流れで考えましたが、上手くできませんでした。
>それを提示すると回答が付くと思いますよ。


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

----------------------------------
Sub test001()

Dim i As Long
i = 1
Do While Cells(i, 1) = ""
Cells(i, 1) = ※1111、2222、3333のシートいずれかのA1セル(データが入っているもの)
i = i + 1
Loop
End Sub
----------------------------------

超初心者のため、上記形でどうにかならないかと考えましたが、
お恥ずかしいことに、以下の点でつまづいています・・

1.上記、1111、2222、3333のシートの中で
 データが入っているシートのA1セルを指定する方法

2.1111、2222、3333のすべてのシートでA1セルが空欄だった場合は
 どうしたらよいのか

3.フォーマットのA列の最下行まで来たら、B列の1列目から同じ処理を繰り返す方法。

4.フォーマット内が一部セル結合されているため、上記の方法で上手くコピーできるのか?


そもそも上記の処理では効率が悪いもしくは難しいのでしょうか・・?
他によい方法があれば教えていただきたいです。
どうぞよろしくお願いいたします。
・ツリー全体表示

【79815】VBAでcountifsを使用したい
質問  ウメ  - 18/4/18(水) 9:47 -

引用なし
パスワード
   お世話になります。

1行目はタイトル行で
A2:E5まで数字が羅列してあるとして

A B C D E
a b c d e
1 2 4 0 9
2 1 5 9 1
1 0 7 1 3
2 1 3 4 3
2 4 1 5 2

F2セルにその行で条件に合う(AND条件)ものをカウントしたいのですが
文法で手間取っています。
条件:A2>=1,B2>=2
この場合、A2は"1"で、B2は"2"なので 1


関数だと
=COUNTIFS(A2:A2,">=1",B2:B2,">=2") で希望の結果になりましたが
VBAでの記載方法がわかりません。
変数を用いてF2〜F5まで処理を繰り返す予定です。

ご教授お願いいたします。
・ツリー全体表示

【79814】Re:商品の出荷開始月と終了月を求めたい
発言  roo  - 18/4/18(水) 9:15 -

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

レス・不明点の提示ありがとうございます。
解決はマクロを希望しています。

>1)どこに表示したいのでしょうか。
品番と月別データの間に列を挿入して表示したいと考えています。

>2)データは1年分でしょうか。
現時点で丸2年分ありますが、これからも増える前提で表を作っています。

>3)導入月が2回とか1回もないということもありますか。
ありえますが、導入月も廃番月も早い方を採用し、以降のデータは導入月や廃番月という目線では無視します。

宜しくお願い致します。
・ツリー全体表示

【79813】Re:商品の出荷開始月と終了月を求めたい
発言  マナ  - 18/4/17(火) 23:55 -

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

わたしには無理ですが数式での解決を希望ですか。
それともマクロでもよいですか。

いずれにしても、不明な点が多いです。

>そこに商品の導入月と廃番月を求めて表示したいです。

1)どこに表示したいのでしょうか。
2)データは1年分でしょうか。
3)導入月が2回とか1回もないということもありますか。
・ツリー全体表示

【79812】Re:変数のあるセル式を作る方法
回答  よろずや  - 18/4/17(火) 21:43 -

引用なし
パスワード
   >引数に入れなくてはダメですか。
>できれば引数にいれずにうまく動くと嬉しかったのですが・・・。
>そんな都合のいい方法はないのですね。
引数に入れないと、セル行の1列目を書き換えたときに関数の再計算が実行されません。
実行できるようにする方法もありますが、それをやると重くなります。
・ツリー全体表示

【79811】Re:変数のあるセル式を作る方法
発言  γ  - 18/4/17(火) 21:07 -

引用なし
パスワード
   ユーザー定義関数で可能かどうかといえば可能でしょう。
例えば、以下。

Function NAGASA()
  NAGASA = Cells(Application.Caller.Row, 1).Value - 50
End Function

でも、引数を与えたほうが内容が明確になるのでお薦めです。
・ツリー全体表示

【79810】商品の出荷開始月と終了月を求めたい
質問  roo  - 18/4/17(火) 19:53 -

引用なし
パスワード
   全くの初心者で申し訳ないのですがご教示お願いします。

商品の月別出荷数の表があり、
そこに商品の導入月と廃番月を求めて表示したいです。

商品名 4月 5月 6月・・・
ABCD  350 460 720・・・
EFGH  800 900 950・・・

上記のような並びでデータが入っています。

導入月と廃番月には定義が設定されており
・導入月・・・出荷が0の月が3か月以上続いた後、1以上の出荷が初めてあった月
・廃番月・・・1以上の出荷があった月の後で、出荷数が0の月が3か月連続した時の3か月目の月

上記のデータでアドバイスいただけますでしょうか。
宜しくお願い致します。
・ツリー全体表示

【79809】Re:変数のあるセル式を作る方法
質問  ペーターパン  - 18/4/17(火) 19:11 -

引用なし
パスワード
   ▼よろずや さん:
>>表示更新を自動で連発されるようなマクロは重くなってしまうので避けたいです。
>でしたら、セル行の1列目を引数に含める必要があります。

回答ありがとうございます。
引数に入れなくてはダメですか。
できれば引数にいれずにうまく動くと嬉しかったのですが・・・。
そんな都合のいい方法はないのですね。
そうなると組み方は
 ・引数に入れる。
 ・引数から該当するL1を算出するようにFunctionプロシージャ内で組む
ということでしょうか?
やってみます。
他にも方法がある、こうすればできるなどありましたあらお返事頂けますと嬉しいです。
まずは上記方法で作ってみます。
・ツリー全体表示

【79808】Re:VBA初心者です。ブック間の列コピーを...
発言  マナ  - 18/4/17(火) 19:00 -

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


>ここから、kをある程度大きな数字にして

わたしは、全く気にしないのですが
もし、気になるなら、

>For k = 1 To 999

でなく、Do〜Loopを使う方法もあります。
ちゃんと、ループを抜ける条件を設定しないと
無限ループになり、マクロが終わらなくなるので
わたしは、For〜Nextを多用しています。

Do
  k = k + 1
  myF = myPath & k & ".xlsx"
  If Dir(myF) = "" Then Exit Do
  
  省略

Loop
・ツリー全体表示

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