A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
>A-101をA101に書き換えて続行させる方法が分からず立ち往生
⇒本来、部屋番号は4桁でハイフン等の文字列が入らないようにした方が良いと思う。
例えば、入力規則でも使って部屋番号データを規制するとか。
又、入力されているのならば置換すれば良いだけのように思えます。
マクロはシンプルにした方が良いと思いませんか、マクロ処理前の役割分担をした方が良い思うので
検討されては如何でしょうか。
返事が遅くなってしまいましたが、この欄でまとめてお礼させていただきます。
この履歴一覧は、過去5年間のデーターを複数の担当者が入力していた為に、起きたミスで細かいところまで把握しないで作り始めた結果でした。
皆さんのアドバイスを参考に置換する方法でやってみたのですが、A-XXXXと4桁あるものが出てきたため、msgboxで間違った部屋番号を表示して、inputboxで正しい部屋番号を入力するようにして、うまくいきました。
又、今後は入力時に、規制してこのようなことが起きないようにしました。
皆様が懸念した通り、皆様が回答してくださったコードはほとんど理解できませんでした。
今回このような質問をするレベルにも達していない事が、良く分かりました、回答して下さった皆様方には、本当に申し訳ないと思っています、今回はありがとうございました。
No.6
- 回答日時:
作業の進め方はどう?。
部屋別シートに転記したい、これが先行している。後でイレギュラーがあって困る。これでは遠回りです。
どんなデータが存在しどういうシート名を生成するか決める、イレギュラーなケースはないか、エラーになりそうな要素をクリアしてから転記のマクロに取り掛かると作業戻りが少ない。
これは自分で感じながらしないと、「勉強しますっ」だけでは直らない。
仕様を固める、エラーを防ぐ、機能を考える、こんなこと考えてからマクロ作成すると良い。
最初の土台が良ければブレない。
No.5
- 回答日時:
どういうマクロになっているのでしょうね。
それで、直しようもないので、こちらが勝手にコードを書かせていただきます。
A B
部屋番号 人員
A101 6
A102 3
A-111 5 'ハイフン無しでも、存在しない
A104 10
Sub TestConvertData1()
Dim rng As Range
Dim c As Range
Dim n As String
Dim tmp As Variant
Set rng = Range("A2", Cells(Rows.Count, 1).End(xlUp))
On Error GoTo ErrHandler
For Each c In rng
n = c.Value
Worksheets(n).Cells(Rows.Count, 1).End(xlUp).Value = c.Offset(, 1).Value
Next c
Exit Sub
ErrHandler:
'見つからない場合の処理
n = Replace(c.Value, "-", "", , , 1) '全角でも除去可能
tmp = Evaluate("'" & n & "'!A1")
If IsError(tmp) Then
Resume Next
Else
c.Value = n
Resume
End If
End Sub
お礼が遅くなってしまいましたが、NO7の方のお礼でまとめて書かせていただきました、今回はありがとうございました。
丁寧にコードを書いていただきましたが、ほとんど理解できませんでした。申し訳ありませんでした
No.4
- 回答日時:
>シート名は部屋番号を、数字のみ (4桁)、A101~、B101~に分けています。
この意味がわからない。「数字のみ」とはなに?
宿泊記録(履歴?)一覧があって、色んな部屋《番号)が出てくる。その部屋番号で、シート別にデータを振り分けたいのか。
その場合に、A101のところがA-101になっている行があると、そのままでは処理できないと言うことか?
もっと丁寧に質問を書くこと。
(1)処理する前に部屋番号の在る列をA列として、-を操作で削除する。
(2)部屋番号別に振り分けるとき、-が無いか調べて、あれば削除してして、削除後のデータでシート名を指定する。
などが考えるが、それで良いか。
ーー
そのコードの書き方が判らないのか。
(1)は操作でも出来る。
A列全体を範囲指定
検索する文字列ー
置換後の文字列 何も指定しない
すべて置換
これらをマクロの記録を採ってVBAコードに出来る。
(2) の場合
A111,A112,A113と言うシートは、挿入ーシートの操作であらかじめ準備しておくとして、(VBAコードでも出来るが略)
Sheet2にデータがあるとして
Sub test01()
d = Worksheets("Sheet2")..Range("A65536").End(xlUp).Row
MsgBox d
For i = 1 To d
sn = Worksheets("Sheet2").Cells(i, "A")
p = InStr(sn, "-")
If p <> 0 Then
sn = Replace(sn, "-", "")
MsgBox sn
Else
End If
ds = Worksheets(sn).Cells(65536, "a").End(xlUp).Row
Worksheets(sn).Cells(ds + 1, "a") = Worksheets("sheet2").Cells(i, "B")
Next i
End Sub
例データ
Sheet2 A1:B4
A-111山田
A112木村
A113鈴木
A-112田中
ーー
コードを実行結果
シート A111 A2
山田
シート A112 A2:A3
木村
田中
シート A113 A2
鈴木
ーーー
これでわかるとおり、
質問のことなど、小さいことで、他の全体的なコードは判っているのか心配。
上記コードを改良すれば出来る課題ではないかと推測する。
お礼が遅くなってしまいましたが、NO7の方のお礼でまとめて書かせていただきました、今回はありがとうございました。
丁寧にコードを書いていただきましたが、ほとんど理解できませんでした。申し訳ありませんでした
No.3
- 回答日時:
A-101のエラーだけでなくA 101やA_101も同じA101でしょう。
その履歴の値はどういう名称のシートか、どういう値だったらエラーなので、というのを精査してからでよいのでは。
後、256シート数は越えないと思いますが念のため。
対処がわからないならシート保留分だけ最終シートにでも固める。
シート名渡してシート名チェックをする。置換も良い。
2桁目固定ならMID関数使う、でも出来る。
No.2
- 回答日時:
>数字のみ (4桁)、A101~、B101~に分けています。
シート1のA1に部屋番号が記入してあるとして。
どういった間違い要素が紛れているのかまるで不明だとすると,たとえば
dim res
res = strconv(worksheets("Sheet1").range("A1").text, vbnarrow)
if len(res) > 4 then
res = left(res,1) & right(res, 3)
end if
worksheets(res).select
みたいな具合でしょうか。
No.1
- 回答日時:
難しい方法はわかりませんが
簡単な方法ならありますが コードを書くのが少し面倒かな、、
数が多いと大変だし・・。
IF条件で処理すりゃいいんです
もし 参照セルがA-101だったら 参照セル.Value="A101"
ってな感じで
または 置換という方法もあります
VBAでREPLACE関数を使って - を ””(空白の意味) に置換するのです
REPLACE関数の使い方は ここのスペースで説明するよるも
ネットで検索してください わかりやすいページがあります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) 【VBA】PDF出力に任意のファイル名前を付ける方法 3 2023/07/21 10:55
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。 5 2022/11/20 09:48
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) 簡単なエクセルマクロについて 4 2023/02/20 10:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのデーターが2か月前の...
-
エクセルVBA、別ブックへ転記す...
-
【マクロ】顧客番号にて一致さ...
-
エクセル共有したが、アクセス...
-
エクセル②
-
(マクロ)データをAブックからB...
-
Excelでセルの値が同じか...
-
エクセルを使っていて2024/5/15...
-
指定文字の間に
-
Microsoft 365の Excel を使用...
-
エクセルの計算
-
エクセルでの作業計算方法について
-
Excelで全角を半角にしたいので...
-
エクセル関数に詳しい方教えて...
-
Googleスプレッドシートでファ...
-
エクセル 文字を増やしたい。
-
はがきについて。
-
エクセルの暗号化なしのバーの...
-
【マクロ】必要な項目(列)の...
-
Excel
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ExcelVBA】sheet作成時にマク...
-
エクセル/マクロ Exit Subが実...
-
VBA シートの切り替えができな...
-
マクロ実行ボタンがコピー出来ない
-
VBAでシートコピー後、シート名...
-
エクセル 「実行時エラー"13":...
-
エクセル 複数シートのフィル...
-
フェイス・シートについて教え...
-
不明なコマンドです("FROM")。...
-
Access2010 「演算子がありませ...
-
オペランドが足りませんとコメ...
-
Excel2010でふりがなが漢字にな...
-
エクセルの文字間スペースを入...
-
pythonでrequestsが使えない
-
mfc42.dllファイルってなんです...
-
貼り付けをマクロで禁止させたい。
-
WordPressをインストールしてい...
-
(int)キャストとintvalの違い
-
AUTOCAD 2010でdwlファイルの場...
-
OBSが起動できません
おすすめ情報