![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
土日中で完成させないといけないものがあって急いでいます。
水曜日から、初めてマクロについて勉強しだして、結構むちゃぶりですが、
仕事で必要だから作ってほしいといわれました。
そこで大量の数字の置換方法と、列から列への代入?方法が知りたいです。
私が作っているのは会計ソフトに、別の会計ソフトからの仕訳データをCsvで取り込むために、
取り込みデータ用に変換するマクロを作成中です。
とてもたくさんあるのですが、一部例を載せます。
L列 N列
借方消費税区分コード 貸方消費税区分コード
31
82
82
31
・
・
・
のようになっています。
L列の数字をF列に、N列の数字をI列に持っていきたいです。
その際、この数字は前の会計ソフトのコードのため、新しいソフトのコードに変換が必要です。
これは移動が先でも、置換が先でも大丈夫です。
最終的に借方のコードが変更後のコードでF列にあれば問題ありません。
置換前コード 置換後コード
11 課税売上 10 課税売上
12 非課税売上 34 非課税売上
31 課税仕入対課売 40 課税仕入(課税売上にかかる仕入)
・
・
・
・
と結構な量があります。
シート2に置換リストを使って置換する方法もネットで調べましたが難しくて理解ができておりません。
もう少しわかりやすく、やり方を説明していただきたいです。
よろしくお願いします。
No.11ベストアンサー
- 回答日時:
こんばんは!
理屈抜きで、とりあえずコードだけ・・・
↓の画像のようにSheet2に置換前後の文字列データの表を作成しておくとします。
元データはSheet1としています。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long
Dim wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
'//▼Sheet1のL・N列をF列・I列にコピー&ペースト//
.Range("L:L").Copy .Range("F1")
.Range("N:N").Copy .Range("I1")
'//▼ココから操作//
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
.Range("F:F,I:I").Replace what:=wS.Cells(i, "A"), replacement:=wS.Cells(i, "B"), lookat:=xlWhole
Next i
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
![「マクロ超初心者です。」の回答画像11](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/5/667667_5f8945aae4f83/M.jpg)
No.12
- 回答日時:
コードの読み替えは比較的簡単に実現できると思いますが、最終的にCSVで出力する必要があるんですよね?
であれば、新の会計ソフトで読み込める形式でCSVが出力できるかを早めに確認しておいた方が良いですよ!!
文字項目はダブルクォーテーションで括るとか括らないとか。前ゼロはサプレスしても良いとか、ダメだとか。
その辺を確認した上で、コードの読み替えを検討しても遅くないと思います。
とりあえず、手作業で変換してみてCSVを作成し、新会計ソフトで取り込みを行ってみることをお勧めします。
No.10
- 回答日時:
まずは、No.1のお礼を読んでのアドバイスです。
>事務所で作成できる人がいないことと、勉強も兼ねて作ってほしいとのことでした。
そんな物に期限を付けるの?
気長に作るならともかく、休み明けまでに作れって、それは変。
それに、マクロで計算した数字は別の手段で確認するなら、マクロ化する必要すらないのではないのかな。
目的と手段がおかしなことになってますよ。
今一度会社でお話をされることを勧めます。
・・・本題・・・
具体的にどの処理が分かりませんか?
マクロとは言え、これプログラミングですから。
ちゃんとしたアルゴリズムを作る必要があります。
それは出来ていますか?
代わりに作って欲しいという事であれば、そのアルゴリズムを示してください。
「このデータをこんなデータに置き換えたい」
では、アルゴリズムからコードまで全部作ってくれと言う事になります。
申し訳ありませんが、それ…【作業依頼】であって【質問】ではありません。
作業依頼なら専門家に委託しましょう。
お手軽に済ませるなら、
ココナラ
https://coconala.com/
なんて委託サイトもあります。
勉強がてら……ということであれば、まずはアルゴリズムについて勉強しましょう。
※ これ、マクロを勉強するうえでの真面目な回答です。
・・・
てか、マクロにする必要すらない処理です。
数式で処理できます。
11→10
12→34
31→40
と置き換えたいなら、
一覧表に
A列 B列
11 10
12 34
31 40
としておき、
VLOOKUP関数で置換前のコードの値でA列の値を検索して、B列の値を返せば良い。
(数字だけの表を示しましたが、コードに数字と名称が含まれるなら、
数字と名称を含んだ表を作ってください)
質問を見ると、マクロ以前の問題と思うんです。
仕事だけど手を煩わせたくない。ただで代わりにやって欲しい…‥そんな印象を受けます。
No.9
- 回答日時:
No.5です。
>と結構な量があります。
と質問文にはありますのでセルの値を調べてからの置換は誤置換は防げてもIf文がどれ程の量必要になるのか?は初級レベルですが気になりました。
そもそも対応表が作成できるのであれば『置換前コード』をkeyに『置換後コード』をitemにしたDictionaryオブジェクトの方をお勧めはしますが、この一件でミスがあった場合の責任は取れませんのでコードは控えます。
その昔VBA未経験時にGW中でデータベース作成を指示され、出来なければ配置転換と言うトップダウンに必死でしたから、今回出来ない(実際どうなっているか現物が不明)場合が恐ろしやぁ~ですね。
No.8
- 回答日時:
こんにちは、
>土日中で完成させないといけないものがあって急いでいます。
時間が無くマクロの理解、知識もないなら、時間の無駄になる前に
Excelの機能を使い、計算(一時抽出)用 列やシートを作成して
手作業でコピペや機能(関数、フィルタ、置換、ソートなどなど)
行った方が良さそうですね。最も同じ作業の繰り返しを行うなら
部分的に自動記録のマクロを活用する等することも良いと思います。
いずれにしても、
>とてもたくさんあるのですが、一部例を載せます。
一部の例を開示して処理するコードを見ても他の例に直せないでしょうし
すべての例やデータは当然開示できないでしょうし、、、
すべてを開示できれば、作っても良いですが、おそらくその場合、今後、
あなたに死ぬほどの出来ない事を押し付けられ苦しむのは、目に見えています
マクロを覚える(誰かに作ってもらう)事はあきらめて
作業を責任範疇にある皆さんで手分けして間に合わせた方が良いと思います。マクロでなくともできるので、、
No.7
- 回答日時:
No.6 (=No.3)です.
No.6で,「No.2 です.」と書きましたがNo.3でした.すみません.
(こんなんではプログラムも ミスしてしまいそう・・・)
No.6
- 回答日時:
No.2 です.
念のために尋ねますが,置換したいのは 数字だけ ですよね?
そのつもりでNo.2のVBAを書きましたが.
No.2のサンプルコードをそのままVBAに張り付けて実行してみてください
「'」から後ろは「コメント」なのでプログラムに影響しません.
それと,
No.2 では 置換する行を 2~30 にしていますが,30ではなくて十分に大きな数にしておく必要があります
そうしないと,No.1さんが心配されているような事態になってしまいます
ご注意ください.
No.5
- 回答日時:
11 を 10 にって。
置換前がたくさんあると言う点から、111 が存在する可能性は?と回答者は気にしますね。
12 と 112 とか。
そうなると誤置換の危険はありますから、少なくとも置換を利用するのはどうなのかな?
項目名が相応同じであればそちらを基準にする方が安全かもですけど、質問文にある例題3行目
『31 課税仕入対課売 40 課税仕入(課税売上にかかる仕入)』
は該当できないって事になるかな?
No.4
- 回答日時:
出来る人がいない=あなたもできない ですよね
そのパターンはドツボにはまるパターンです
やめたほうがいいと 忠告しておきます
それとは別の話しで、
規則性をまず見つけます
処理的にはループと置換(Replace関数)と判定の組み合わせです
あと 判定する範囲(左から何番目までとか)
但し、置換は 想定外の処理になることがあります
置換するには比較が必要です
スペースがある場合、
大文字小文字、
半角全角
漢字の場合は似たような違う漢字
数字に見えるものは文字列なのか数字なのか
これらの処理をよく考える必要があります
No.3
- 回答日時:
とりあえず,わかりやすいように書いてみました
L列をF列にコピーして 1行目から30行目までを置き換え(11→10,12→34,31→40)
参考にはなるでしょうか
Sub test()
Dim retu As String
Dim i As Long
retu = "F" '貼付け先の列 (ここではF列)
Columns("L").Copy ' L 列をコピー
Columns(retu).PasteSpecial (xlPasteAll) ' 貼付列に貼り付け
Columns("L").Delete ' L 列を削除
For i = 1 To 30 ’1行目から 30行目まで
If Cells(i, retu) = 11 Then ' もしも11なら
Cells(i, retu) = Replace(Cells(i, retu), 11, 10) ' 11を10に置き換え
ElseIf Cells(i, retu) = 12 Then ' もしも12なら
Cells(i, retu) = Replace(Cells(i, retu), 12, 34) ' 12を34に置き換え
ElseIf Cells(i, retu) = 31 Then ' もしも31なら
Cells(i, retu) = Replace(Cells(i, retu), 31, 40) ' 31を40に置き換え
End If
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 減税・節税 消費税について 4 2023/02/20 13:45
- 財務・会計・経理 消費税の税務について教えてください。 不動産会社の経理をしています。まだまだ勉強中の身です。とんちん 3 2022/07/28 19:26
- 消費税 インボイス制度 2 2022/11/19 14:44
- 財務・会計・経理 消費税の計算方法で教えてください。 例えば年間の課税売上1000万。 課税仕入れが300万の会社で、 3 2022/08/01 08:25
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) エクセルでSUMIFS関数で条件範囲の部分が#valueになる。 4 2023/04/28 12:42
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スペースで区切られた氏名から...
-
秀丸エディタで、「-」や「ー」...
-
サクラエディタなどのエディタ...
-
cshの文字列置換
-
正規表現 特定の文字列を含む行...
-
C言語でテキストファイルの内容...
-
タイトルを一括で変換したい・・・
-
秀丸エディタで、行の後ろに倍...
-
word オートシェイプ内も一括変換
-
F9キーについて。
-
VBA 文字に半角が含まれて...
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
Excel : 3桁以上の半角数字を...
-
Excel VBAでPDFファイルをMicro...
-
EXCELからCSVにすると余計なカ...
-
VBA(テキストファイルのデータ...
-
大文字と全角文字は同じ意味で...
-
コマンドプロンプト 全角を含ん...
-
テキストをhtml変換するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スペースで区切られた氏名から...
-
VBA 置換文字がみつからない時
-
各項目がダブルクォーテーショ...
-
csvデータ ダブルクォーテ...
-
エクセル VBA 複数条件一...
-
正規表現で、特定の文字列を含...
-
csvデータのダブルクォーテーシ...
-
xmlファイル内の文字列置換
-
PowerShellでテキストの空白行...
-
C#で空白行を削除する方法
-
ハングルを日本語に置換
-
複数のパワーポイントファイル...
-
Excel・ユーザーフォームの情報...
-
C言語でテキストファイルの内容...
-
Eclipse 改行後のタブ
-
テキストファイル中の文字列の置換
-
○文字目に文字挿入
-
正規表現 特定の文字列を含む行...
-
EXCEL警告「置換対象のデータが...
-
VBscriptで「改行」と「"」を置...
おすすめ情報
コードのみです!
コードは、3桁には絶対なりません。